更改Mocha的默认超时

2020/10/24 20:41 · javascript ·  · 0评论

如果我们有一个单元测试文件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 });

文档未涵盖全局超时设置,但提供了一些有关在其他常见情况下如何更改超时的示例。

本文地址:http://javascript.askforanswer.com/genggaimochademorenchaoshi.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!