如果我们有一个单元测试文件my-spec.js并与mocha一起运行:
mocha my-spec.js
默认超时为2000毫秒。可以使用命令行参数将其覆盖以进行部分测试:
mocha my-spec.js --timeout 5000
是否可以全局更改所有测试的默认超时?即,当您调用时,默认超时值将不同于2000毫秒:
mocha my-spec.js
默认情况下,Mocha将读取一个名为的文件test/mocha.opts
,该文件可以包含命令行参数。因此,您可以创建一个包含以下内容的文件:
--timeout 5000
每当您在命令行上运行Mocha时,它将读取此文件并默认将超时设置为5秒。
根据您的情况可能更好的另一种方法是describe
在测试文件的顶级调用中进行如下设置:
describe("something", function () {
this.timeout(5000);
// tests...
});
这将允许您仅基于每个文件设置超时。
如果希望全局默认值为5000,但可以为某些文件设置不同的值,则可以使用这两种方法。
请注意,如果您要调用this.timeout
(或访问this
该Mocha集合的任何其他成员),通常不能使用箭头功能。例如,这通常不起作用:
describe("something", () => {
this.timeout(5000); //will not work
// tests...
});
这是因为箭头函数this
从出现该函数的作用域中提取。Mocha将为该函数调用一个具有适当值的函数,this
但该值不会在箭头函数内部传递。Mocha的文档说明了以下主题:
不建议将箭头函数(“ lambdas”)传递给Mocha。由于此功能的词汇绑定,此类功能无法访问Mocha上下文。
只需添加正确的答案,您就可以使用箭头功能设置超时,如下所示:
it('Some test', () => {
}).timeout(5000)
添加此内容是为了完整性。如果您(像我一样)在package.json
文件中使用脚本,只需将--timeout
选项添加到mocha:
"scripts": {
"test": "mocha 'test/**/*.js' --timeout 10000",
"test-debug": "mocha --debug 'test/**/*.js' --timeout 10000"
},
然后,您可以运行npm run test
超时设置为10,000毫秒的测试套件。
在当前版本的Mocha中,可以按以下方式全局更改超时:
mocha.timeout(5000);
只需在测试套件中的任何位置(最好在规范顶部或单独的测试助手中)的上方添加该行即可。
在较旧的版本中,并且仅在浏览器中,您可以使用更改全局配置mocha.setup
。
mocha.setup({ timeout: 5000 });
该文档未涵盖全局超时设置,但提供了一些有关在其他常见情况下如何更改超时的示例。
文章标签:javascript , mocha , unit-testing
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
评论已关闭!