【问题标题】:Sequential test scenarios for JestJest 的顺序测试场景
【发布时间】:2018-03-10 20:10:42
【问题描述】:

我已经开始在我的 React 项目中使用create-react-app,作为一个测试库,它附带了Jest

作为我的 React 应用程序的一部分,我喜欢创建集成测试(以及单元测试),因为我发现能够检查应用程序中的快乐路径是否按预期工作很有用.例如:使用 Enzyme 渲染(装载)页面,但只模拟 http 调用(使用 Sinon),以便立即执行完整的 React/Redux 流程。

在使用create-react-app 之前,我使用过Mocha 进行测试,我发现mocha-steps 是集成测试的一个很好的扩展,因为它允许一个组中的测试按顺序执行,并在出现以下情况时处理停止步骤失败,但不停止整个测试运行。

问题:有什么方法可以让 Jest 以类似的方式表现? 具体来说,我希望能够在一个组中指定一系列测试(例如在 @ 987654329@) 并让它们按顺序执行。

我一直在查看 Jest 文档或任何其他扩展它的库,但我发现是空的。就目前而言,感觉唯一的选择就是进行一项让我感到难过的大型测试,如果可以避免的话,我宁愿不把 Jest 换成 Mocha。

谢谢!

【问题讨论】:

    标签: javascript testing automated-tests integration-testing jestjs


    【解决方案1】:

    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 然后可以先运行并发测试,然后再运行串行测试。

    【讨论】:

    • 这是一个有趣的解决方法,并且可能是目前获得类似于mocha-steps 的最佳方法。不幸的是,组中早期测试之一的失败很可能会导致后续测试也失败,因此运行的“测试失败”计数会产生误导 - 但至少它应该有效:) 感谢您的想法!
    • 我也一直想要这个功能。特别是对于端到端测试。在有人为此进行 PR 之前,我们只需要解决一些变通办法。
    猜你喜欢
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多