使用 Mocha 同步迭代测试文件



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

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

不。

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

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

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

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

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

最新更新