更改摩卡的默认超时

我有以下问题,如果我们有unit testing文件my-spec.js和摩卡运行:

mocha my-spec.js 

默认超时时间为2000米。可以用命令行参数覆盖部分testing:

 mocha my-spec.js --timeout 5000 

问题是:是否有可能更改所有testing全局默认超时? 也就是说,当你打电话

 mocha my-spec.js 

默认超时值是不同于2000毫秒预先感谢

默认情况下,Mocha将读取一个名为test/mocha.opts的文件,其中可以包含命令行参数。 所以你可以创build一个这样的文件,其中包含:

 --timeout 5000 

无论何时在命令行运行Mocha,它都会读取这个文件,默认设置超时时间为5秒。

另一种可能更好的取决于你的情况的方法是在你的testing文件的顶层describe调用中像这样设置:

 describe("something", function () { this.timeout(5000); // tests... }); 

这将允许您仅在每个文件的基础上设置超时。

如果您希望全局缺省值为5000,但是可以为某些文件设置不同的值,则可以使用这两种方法。


请注意,如果您打算调用this.timeout (或访问Mocha为您设置的其他任何成员),则通常不能使用箭头函数。 例如, 这通常不会工作

 describe("something", () => { this.timeout(5000); // tests... }); 

这是因为一个箭头函数从函数出现的范围中取出了this函数.Mocha会为this函数调用一个很好的值,但是这个值不会在箭头函数中传递。 摩卡的文件在这个话题上说:

向摩卡传递箭头函数(“lambdas”)是不鼓励的。 由于这个词汇的绑定,这些function无法访问摩卡上下文。

为了完整性添加这个。 如果你(像我)在你的package.json文件中使用一个脚本,只需在摩卡上添加--timeout选项:

 "scripts": { "test": "mocha 'test/**/*.js' --timeout 10000", "test-debug": "mocha --debug 'test/**/*.js' --timeout 10000" }, 

然后你可以运行npm run test来运行testing套件,超时时间设置为10000毫秒。

如果你发生(像我一样)在浏览器而不是服务器上运行Mocha,你可以随时使用mocha.setup来更改全局configuration。

 mocha.setup({ timeout: 5000 }); 

只需在testing套件的任何位置添加上面的行,最好在规范的顶部或者单独的testing助手中。

下面是链接到文档的几个例子,展示了如何在浏览器中configurationMocha。

只需添加正确的答案,您可以使用箭头函数设置超时,如下所示:

 it('Some test', () => { }).timeout(5000)