如果我们有一个单元测试文件 my-spec.js 并使用 mocha 运行:
mocha my-spec.js
默认超时为 2000 毫秒。可以使用命令行参数覆盖它以进行部分测试:
mocha my-spec.js --timeout 5000
是否可以为所有测试全局更改默认超时?即当您调用时,默认超时值将不同于 2000 毫秒:
默认情况下,Mocha 将读取一个名为的文件,该文件test/mocha.opts可以包含命令行参数。因此,您可以创建这样的文件,其中包含:
test/mocha.opts
--timeout 5000
每当您在命令行运行 Mocha 时,它都会读取此文件并默认设置 5 秒的超时时间。
根据您的情况,另一种可能更好的方法是在测试文件的顶级describe调用中像这样设置它:
describe
describe("something", function () { this.timeout(5000); // tests... });
这将允许您仅基于每个文件设置超时。
如果您想要全局默认值 5000 但为某些文件设置不同的值,则可以使用这两种方法。
请注意,如果您要调用(或为您访问 Mocha 集合的this.timeout任何其他成员) ,通常不能使用箭头函数。this例如, 这通常不起作用 :
this.timeout
this
describe("something", () => { this.timeout(5000); //will not work // tests... });
这是因为箭头函数this取自函数出现的范围。Mocha 将调用具有良好值的函数,this但该值不会在箭头函数内部传递。Mocha 的文档对此主题进行了说明:
不鼓励将箭头函数(“ambdas”)传递给 Mocha。由于 this 的词法绑定,这些函数无法访问 Mocha 上下文。