如果我们有一个单元测试文件my-spec.js并使用mocha运行:
mocha my-spec.js
默认超时为2000毫秒.可以使用命令行参数覆盖部分测试:
mocha my-spec.js --timeout 5000
是否可以全局更改所有测试的默认超时?
mocha my-spec.js
如果我们有一个单元测试文件my-spec.js并使用mocha运行:
mocha my-spec.js
默认超时为2000毫秒.可以使用命令行参数覆盖部分测试:
mocha my-spec.js --timeout 5000
是否可以全局更改所有测试的默认超时?
mocha my-spec.js
默认情况下,Mocha将读取一个名为test/mocha.opts
的文件,该文件可以包含命令行参数.因此,您可以创建这样一个文件,其中包含:
--timeout 5000
无论何时在命令行上运行Mocha,它都会读取此文件,并默认设置超时5秒.
根据您的情况,另一种可能更好的方法是在测试文件的顶级describe
调用中这样设置:
describe("something", function () {
this.timeout(5000);
// tests...
});
这将允许您仅在每个文件的基础上设置超时.
如果希望全局默认值为5000,但为某些文件设置了不同的值,则可以使用这两种方法.
请注意,如果您要呼叫this.timeout
(或访问摩卡为您设置的this
中的任何其他成员),通常不能使用箭头功能.例如,this will usually not work:
describe("something", () => {
this.timeout(5000); //will not work
// tests...
});
这是因为箭头函数从函数出现的范围中选取this
.Mocha将使用this
的良好值调用该函数,但该值不会在arrow函数中传递.摩卡咖啡的文档在this topic页上写道:
不鼓励将箭头功能("lambdas")传递给摩卡.由于这个函数的词法绑定,这些函数无法访问Mocha上下文.