更改摩卡的默认超时
我有以下问题,如果我们有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)