lm.*_*lm. 144 javascript unit-testing mocha.js
如果我们有单元测试文件my-spec.js并使用mocha运行,我有以下问题:
mocha my-spec.js
Run Code Online (Sandbox Code Playgroud)
默认超时为2000 ms.可以使用命令行参数覆盖部分测试:
mocha my-spec.js --timeout 5000
Run Code Online (Sandbox Code Playgroud)
问题是:是否有可能全局更改所有测试的默认超时?即你打电话的时候
mocha my-spec.js
Run Code Online (Sandbox Code Playgroud)
默认超时值不同于2000毫秒提前感谢
Lou*_*uis 269
默认情况下,Mocha将读取一个名为test/mocha.opts可包含命令行参数的文件.所以你可以创建一个包含以下内容的文件:
--timeout 5000
Run Code Online (Sandbox Code Playgroud)
每当您在命令行运行Mocha时,它将读取此文件并默认设置为5秒的超时.
根据您的情况可能更好的另一种方法是describe在测试文件的顶级调用中将其设置为:
describe("something", function () {
this.timeout(5000);
// tests...
});
Run Code Online (Sandbox Code Playgroud)
这将允许您仅基于每个文件设置超时.
如果您希望全局默认值为5000但可以为某些文件设置不同的内容,则可以使用这两种方法.
请注意,如果要打电话this.timeout(或访问this该Mocha集的任何其他成员),通常不能使用箭头功能.例如,这通常不起作用:
describe("something", () => {
this.timeout(5000); //will not work
// tests...
});
Run Code Online (Sandbox Code Playgroud)
这是因为箭头函数this取自函数出现的范围.Mocha将调用具有良好值的函数,this但该值不会在箭头函数内传递.Mocha的文档就此主题说:
不鼓励将箭头函数("lambdas")传递给Mocha.由于它的词汇绑定,这些函数无法访问Mocha上下文.
Den*_*nis 49
只需添加正确的答案,您可以使用箭头功能设置超时,如下所示:
it('Some test', () => {
}).timeout(5000)
Run Code Online (Sandbox Code Playgroud)
Fre*_*Ben 31
添加此项以获得完整性.如果您(像我一样)在您的package.json文件中使用脚本,只需将--timeout选项添加到mocha:
"scripts": {
"test": "mocha 'test/**/*.js' --timeout 10000",
"test-debug": "mocha --debug 'test/**/*.js' --timeout 10000"
},
Run Code Online (Sandbox Code Playgroud)
然后,您可以运行npm run test测试套件,并将超时设置为10,000毫秒.
GOT*_*O 0 24
如果您(像我一样)在浏览器而不是服务器上运行Mocha,您始终可以使用更改全局配置mocha.setup.
mocha.timeout(5000);
Run Code Online (Sandbox Code Playgroud)
只需在测试套件的任何位置添加上面的行,最好是在规范的顶部或单独的测试助手中.
以下是文档的链接,其中包含一些示例,说明如何在浏览器中配置Mocha.