Javascript 如何将jest.config.js与create react应用程序一起使用

Javascript 如何将jest.config.js与create react应用程序一起使用,javascript,reactjs,testing,jestjs,create-react-app,Javascript,Reactjs,Testing,Jestjs,Create React App,我想将我的jest配置从我的package.json中移出,我正试图按照建议使用--config,但得到的错误是argv.config.match不是一个函数 package.json cli hutber@hutber-mac:/var/www/management/node$npm test-u >管理层-fresh@0.1.0test/var/www/management/node >react脚本测试——config jest.config.js 用法:test.js[--config=

我想将我的jest配置从我的package.json中移出,我正试图按照建议使用--config,但得到的错误是
argv.config.match不是一个函数

package.json cli
hutber@hutber-mac:/var/www/management/node$npm test-u
>管理层-fresh@0.1.0test/var/www/management/node
>react脚本测试——config jest.config.js
用法:test.js[--config=][TestPathPattern]
argv.config.match不是函数
npm错误!测试失败。请参见上文了解更多详细信息。

我会尝试向您的package.json中添加
“test”:“jest--no cache-w 2”
。然后运行
npm运行测试

这一次我也受够了!创建react应用程序有点棘手,因为它已经包含了笑话。我删除了

--config jest.config.js
行,不需要额外的test.config文件

我还确保我的酶文件名为setupTests.js。测试模块将特别希望运行该文件,因此必须将其命名为该文件。另外,我必须把它放在我的src/文件夹中,之前我把它放在src/测试文件夹中。如果你问的是上述问题,你可能已经过了这一步,但想提一下以防万一。我的setupTests.js看起来像:

import Enzyme from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';

Enzyme.configure({
  adapter: new Adapter()
})
对我来说,添加“---config=jest.config.js”有效

所以整个字符串
react scripts测试--config jest.config.js
,在您的例子中;DR

在选项之前添加
--

"test": "react-scripts test -- --config=jest.config.js",

这里的问题是
react脚本
看不到传递给的选项 信息技术我们可以通过直接运行它来演示这一点

/node\u modules/.bin/react scripts test--config=jest.config.js
#argv.config.match不是函数
./node_modules/.bin/react脚本测试--config=jest.config.js
#这很有效。
变化 将选项传递给脚本的方式因npm的版本而异 您使用的纱线。为完整起见,以下是变更的结果:

#这会运行,但会完全忽略该选项。
npm测试--config=jest.config.js
#这些结果导致“argv.config.match不是函数”,这表明
#人们不了解各种选择。
npm测试--config=jest.config.js
纱线测试--config=jest.config.js
纱线测试--config=jest.config.js
create react app
package.json
中使用

"test": "react-scripts test",
您可以像这样设置其他选项

"test": "react-scripts test -- --config=jest.config.js",
如果希望通过CLI发送选项,则类似的操作可能会起作用

"test": "react-scripts test --",
纱线测试——提环
#作为
反应脚本测试--bail
资源 下面是一些资源来解释不同的用法


    • 对我来说,上述答案都不管用。但在文档的帮助下,我找到了解决方法。 为此,将要配置jest的代码放在
      您的\u项目\u根\u文件夹/src/setupTests.js
      中。我的
      您的\u项目\u根\u文件夹/src/setupTests.js
      如下所示

      import Enzyme from 'enzyme'
      import Adapter from 'enzyme-adapter-react-16'
      
      Enzyme.configure({
          adapter: new Adapter(),
      })
      
      
      还有一点很重要,您需要为
      react v16
      使用
      enzyme-adapter-react-16
      ,为
      react v15
      使用
      enzyme-adapter-react-15

      此外,如果您想将
      酶用于json
      ,可以将以下代码放在
      package.json
      文件中

        "jest": {
          "snapshotSerializers": ["enzyme-to-json/serializer"]
        }
      
      

      执行此操作时,我收到一个错误-
      无效的测试模式--config=jest.config.js |--coverage=true |--watch |--config{“root”:[“/src”],“CollectCoverage from”:[“src/***.{js jsx,ts,tsx},“!src/***.d.ts”],“setupFiles”……改为运行所有测试
      我怀疑,当您添加
      --config
      时,它会忽略默认情况下与create react app捆绑在一起的jest配置。@Chasenbetinger,这是因为您在使用yarnI时,在尝试设置testURL时遇到了
      无效的testPattern
      错误(jest在请求中用作源的location.href(对于CORS)。我最后做了
      DEBUG\u PRINT\u LIMIT=20000 react应用程序重新布线测试--testURLhttp://origin.domain.com
      import Enzyme from 'enzyme'
      import Adapter from 'enzyme-adapter-react-16'
      
      Enzyme.configure({
          adapter: new Adapter(),
      })
      
      
        "jest": {
          "snapshotSerializers": ["enzyme-to-json/serializer"]
        }