0

我已经开始为我的React项目使用create-react-app,并且作为测试库,它随附了JestJest的连续测试场景

正如我作出反应的应用程序的一部分,我喜欢创造集成测试(以及单元测试),因为我觉得它很有用,能够检查在应用程序中的幸福路径是否按预期工作。例如:使用Enzyme渲染(挂载)页面,但只模拟http调用(使用Sinon),以便一次执行完整的React/Redux流程。

使用create-react-app之前,我用摩卡进行测试,我发现mocha-steps是集成测试有很大的扩展,因为它允许一组在测试中的顺序执行,并处理如果的步骤,无需停止失败停止整个测试运行。

问题:有什么办法让Jest以类似的方式行事?具体而言,我希望能够在组中指定一系列测试(例如在describe中),并按顺序依次执行测试。

我一直在寻找Jest文档,或者任何其他扩展它的库,但我已经空了。现在,感觉唯一的选择是进行一次大的测试,这让我感到很难过,如果我能避免它,我宁愿不换掉摩卡咖啡。

谢谢!

回答

2

jest目前不支持标记要连续运行的特定测试(如avatest.serial)。

这一直是requested before,但我不认为他们正在努力。

解决方法是让您确定要同时运行哪些测试文件以及哪些测试文件要串行运行。

例如,我通常将我的单元测试命名为*.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" 
} 

运行npm test可以再下一首先运行并发测试,然后串行的。

+0

这是一个有趣的解决方法,并且可能是获得类似于“摩卡步骤”的最佳方法。不幸的是,一个组中较早的测试失败很可能会导致后续测试失败,因此运行的“测试失败”计数会产生误导 - 但至少它应该工作:)感谢这个想法! –

+0

我一直想要这个功能。尤其适用于端到端测试。在有人为此制作公关之前,我们只能采取变通办法。 – dashmug