如何将jest测试移动到/ test文件夹并让它们运行?

时间:2016-12-04 21:27:51

标签: javascript reactjs react-native jestjs

Jest希望测试位于__tests__文件夹中或命名为blah.test.js.我不喜欢这两种模式。我希望我的测试文件位于/test中,并将它们命名为test/index.ios.test.js似乎多余而愚蠢。我的第一个尝试是将package.json中的jest配置更改为:

"jest": {
    "testPathDirs": ["test"],
    "testRegex": "\\.(js|jsx)$",
    "preset": "react-native"
}

成功找到测试,但都失败了:

Cannot find module 'setupDevtools' from 'setup.js'

  at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:151:17)
  at Object.<anonymous> (node_modules/react-native/jest/setup.js:23:1)

该功能在node_modules/react-native/Libraries/Core/Devtools/setupDevtools.js中。我怎么告诉Jest在哪里找到它?

2 个答案:

答案 0 :(得分:1)

我认为在 roots: ['<rootDir>/test/'] 中设置 jest.config.js 是一种简单的方法

module.exports = {
 roots: ['<rootDir>/test_unit/'],
 ...
}

对我来说效果很好。

答案 1 :(得分:0)

我认为解决此问题的最佳方法是配置testMatch。默认为:

[ "**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[jt]s?(x)" ]

因此,您可以将__tests__更改为tests,也可以将新条目添加到检查两者的数组中。我在package.json中使用以下内容:

  "jest": {
    "testMatch": [ "**/tests/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[jt]s?(x)" ]
  },