如何将 jest 测试移动到 /test 文件夹并让它们运行?
Posted
技术标签:
【中文标题】如何将 jest 测试移动到 /test 文件夹并让它们运行?【英文标题】:How do I move jest tests to a /test folder and get them to run? 【发布时间】:2017-04-19 05:36:00 【问题描述】:edit:我很确定这个问题已经过时了,从那时起 Jest 发生了变化。不要假设答案现在会起作用,甚至是相关的。
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 在哪里可以找到它?
【问题讨论】:
【参考方案1】:我认为在jest.config.js
中设置roots: ['<rootDir>/test/']
很简单
module.exports =
roots: ['<rootDir>/test_unit/'],
...
它对我很有效。
【讨论】:
【参考方案2】:我认为最好的方法是配置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)" ]
,
【讨论】:
这样更好,因为它保留了默认行为。 这是updated link【参考方案3】:我通过设置正则表达式解决了这个问题,因此它可以在我的./test
文件夹中找到所有.js
文件:
"jest":
"preset": "react-native",
"globals":
"__DEV__": true
,
"testRegex": "./test/.*.js$",
"rootDir": "."
,
(这里的 jcollum:我不知道 __DEV__
在那里实际做什么,但如果不是,则会引发错误。开玩笑 17.0.3)
【讨论】:
这种模式不是要求.test.js
吗?如果我将我的 test/index.ios.test.js 重命名为 test/index.ios.js,它将不起作用。
对不起,我误解了你的问题。你是说"./test/.*\\.ios\\.js$",
将您的答案编辑为我最终弄清楚的答案。很难在评论中清晰地发布这样的代码以上是关于如何将 jest 测试移动到 /test 文件夹并让它们运行?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用不同的jest.config.js进行单元和组件测试?
如何将带有 Jest 的 Vue Test Utils 添加到现有的 Vue-CLI 3 项目中?
如何使用 Jest 和 react-testing-library 测试 useRef?
如何在使用 react-testing-library 和 jest 完成的单元测试中启用 react-i18n 翻译文件?