Javascript 更改摩卡咖啡的默认超时
如果我们有一个单元测试文件my-spec.js并与mocha一起运行:Javascript 更改摩卡咖啡的默认超时,javascript,unit-testing,mocha.js,Javascript,Unit Testing,Mocha.js,如果我们有一个单元测试文件my-spec.js并与mocha一起运行: mocha my-spec.js 默认超时为2000毫秒。可以使用命令行参数覆盖部分测试的超时: mocha my-spec.js --timeout 5000 是否可以全局更改所有测试的默认超时? i、 e.默认超时值将不同于您调用时的2000毫秒: mocha my-spec.js 默认情况下,Mocha将读取名为test/Mocha.opts的文件,该文件可以包含命令行参数。因此,您可以创建这样一个文件,其中包含
mocha my-spec.js
默认超时为2000毫秒。可以使用命令行参数覆盖部分测试的超时:
mocha my-spec.js --timeout 5000
是否可以全局更改所有测试的默认超时?
i、 e.默认超时值将不同于您调用时的2000毫秒:
mocha my-spec.js
默认情况下,Mocha将读取名为
test/Mocha.opts
的文件,该文件可以包含命令行参数。因此,您可以创建这样一个文件,其中包含:
--timeout 5000
无论何时在命令行上运行Mocha,它都会读取此文件,并默认设置超时5秒
根据您的情况,另一种可能更好的方法是在测试文件中的顶级description
调用中这样设置:
describe("something", function () {
this.timeout(5000);
// tests...
});
这将允许您仅在每个文件的基础上设置超时
如果希望全局默认值为5000,但为某些文件设置了不同的值,则可以使用这两种方法
请注意,如果要调用
this.timeout
(或访问摩卡为您设置的this
的任何其他成员),则通常不能使用箭头功能。例如,这通常不起作用:
describe("something", () => {
this.timeout(5000); //will not work
// tests...
});
这是因为箭头函数从函数出现的范围中获取此。Mocha将为this
调用具有良好值的函数,但该值不会在arrow函数中传递。摩卡咖啡的文件上写着:
不鼓励向摩卡传递箭头功能(“lambdas”)。由于这个函数的词法绑定,这些函数无法访问Mocha上下文
在当前版本的Mocha中,可以全局更改超时,如下所示:
mocha.timeout(5000);
it('Some test', () => {
}).timeout(5000)
只需在测试套件中的任何位置添加该行,最好是在规范的顶部或单独的测试助手中
在旧版本中,并且仅在浏览器中,您可以使用
mocha.setup
更改全局配置
mocha.setup({ timeout: 5000 });
不包括全局超时设置,但提供了一些关于如何在其他常见场景中更改超时的示例。为完整起见,添加此选项。如果您(像我一样)在
package.json
文件中使用脚本,只需将--timeout
选项添加到mocha:
"scripts": {
"test": "mocha 'test/**/*.js' --timeout 10000",
"test-debug": "mocha --debug 'test/**/*.js' --timeout 10000"
},
然后,您可以运行
npm run test
运行测试套件,超时设置为10000毫秒。只需添加正确答案,您就可以使用箭头功能设置超时,如下所示:
mocha.timeout(5000);
it('Some test', () => {
}).timeout(5000)
谢谢你的信息。但我试图修改mocha.opts文件,但它不会影响。您是否在正确的位置创建了它?Mocha非常明确地说明了它想要这个文件的位置。如果您在
/home/me/src/proj/
中运行Mocha,那么Mocha将搜索此文件:/home/me/src/proj/test/Mocha.opts
,非常感谢。现在更改影响了此。超时(10000);//默认超时^TypeError:this.timeout不是套件中的函数。(/Users/jeff.l/Documents/workspace/unittests/mocha-chai_tests/checkoutTest.js:12:10)@JeffLowery您使用的是箭头函数吗?箭头函数不会建立新的this
,这通常会导致this。超时
失败,正如您在评论中所示。Mocha's还对此进行了更多解释。如果有人感兴趣,大多数IDE还允许您为测试执行注入Mocha选项;e、 g.对于WebStorm,您可以在Run->Edit Configuration->Extra Mocha Options(运行->编辑配置->额外的摩卡选项)下输入此值(即“-timeout 10000”)。问题是“全局更改所有测试的默认超时”。你的答案只改变了一个测试<代码>描述('suite',()=>{…})。超时(5000)不起作用。与前面的答案一样,建议的解决方案目前无效。告诉我在测试中插入显式的setTimeout
指令。这对我来说很有效mocha@5(针对特定测试)@MarcoFaustinelli你误解了文档。设置超时与摩卡咖啡无关。它们用于演示超时设置的效果。这在节点中不起作用。看见似乎CLI选项是唯一的方法。我也不在浏览器中工作。截至今天,答案中链接的文档未提及任何timeout
参数。相反,告诉您在测试中插入显式的setTimeout
指令。@MarcoFaustinelli您误解了文档。设置超时与摩卡咖啡无关。它们用于演示超时设置的效果。