我已开始使用create-react-app
作为我的React项目,作为测试库,它附带Jest。
作为我的React应用程序的一部分,我喜欢创建集成测试(以及单元测试),因为我发现能够检查应用程序中的快乐路径是否按预期工作很有用。例如:使用Enzyme渲染(装载)页面,但只模拟http调用(使用Sinon),以便立即执行完整的React / Redux流程。
在使用create-react-app
之前,我已经使用Mocha进行测试,我发现mocha-steps
是集成测试的一个很好的扩展,因为它允许组中的测试按顺序执行,如果步骤失败而不停止整个测试运行,则处理停止。
问题:有没有办法让Jest以类似的方式行事?具体来说,我希望能够在一个组中指定一系列测试(例如a describe
)并按顺序依次执行。
我一直在浏览Jest文档或任何其他扩展它的库,但我已经空洞了。就目前而言,感觉唯一的选择就是让一个让我感到难过的大型测试,如果我能避免的话,我不愿换掉Jest for Mocha。
谢谢!
答案 0 :(得分:2)
jest
目前不支持标记要以串行方式运行的特定测试(例如ava
的{{1}})。
这已经是requested before但我不认为他们正在研究它。
解决方法是让您确定要同时运行哪些测试文件以及哪些测试文件将以串行方式运行。
例如,我通常使用test.serial
命名我的单元测试,并使用*.test.js
命名我的集成测试。
然后我可以同时运行我的单元测试。
*.spec.js
我可以连续运行我的集成测试。
$ jest '(/__tests__/.*\\.test)\\.js$'
我可以在我的$ jest '(/__tests__/.*\\.spec)\\.ts$' --runInBand
中合并两个。
package.json
然后,运行"scripts": {
"unit": "jest '(/__tests__/.*\\.test)\\.js$'",
"integration": "jest '(/__tests__/.*\\.spec)\\.ts$' --runInBand",
"test": "npm run unit && npm run integration"
}
可以先运行并发测试,然后再运行连续测试。