【问题标题】:Iterate over test files synchronously with Mocha使用 Mocha 同步迭代测试文件
【发布时间】:2017-11-29 16:41:13
【问题描述】:

我有一组 mocha 测试脚本(= 文件),与 mocha.opts 一起位于 /test 中。似乎 mocha 正在并行运行所有测试文件,这是正确的吗?如果在不同的测试脚本中使用测试数据,这可能是一个问题。 如何确保每个文件都单独执行?

【问题讨论】:

    标签: mocha.js


    【解决方案1】:

    似乎 mocha 正在并行运行所有测试文件,这是正确的吗?

    没有。

    默认情况下,Mocha 会按顺序加载测试文件,并记录所有必须运行的测试,然后它会一个接一个地运行测试,再次按顺序运行。 Mocha 不会同时运行两个测试,无论测试是在同一个文件中还是在不同的文件中。请注意,您的测试是异步的还是同步的都没有区别:当 Mocha 开始异步测试时,它会等待它完成,然后再进行下一个测试。

    有一些工具可以修补 Mocha 以并行运行测试。因此,您可能会看到显示 Mocha 测试并行运行的演示,但这需要额外的工具,并且正确地说不是 Mocha 的一部分

    如果您看到建议并行运行测试的行为,那是您的代码中的错误,或者您可能误解了所获得的结果。关于错误,可能会出错并编写代码向 Mocha 指示您的测试已经结束,而实际上仍然有异步操作在运行。但是,这是测试代码中的错误,而不是 Mocha 并行运行测试的功能。

    【讨论】:

      【解决方案2】:

      在 mocha 钩子之外分配环境变量时要小心,因为对这些变量的分配是在任何测试执行之前在所有文件中完成的(即 eny "before*""it" 钩子)。

      因此,在第一个文件中分配给环境变量的值将在第二个文件中被覆盖,在任何 Mocha 测试挂钩执行之前。 例如。如果您在 test1.js 文件中分配 process.env.PORT=5000 并在任何 mocha 钩子之外分配 test2.js 中的 process.env.PORT=6000,那么当来自 test1.js 的测试开始执行时,process.env.PORT 的值将是 6000 和 不是 5000 如你所料。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-26
        • 1970-01-01
        • 2015-01-31
        • 1970-01-01
        • 2018-09-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多