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