小编典典

更改 mocha 的默认超时

all

如果我们有一个单元测试文件 my-spec.js 并使用 mocha 运行:

mocha my-spec.js

默认超时为 2000 毫秒。可以使用命令行参数覆盖它以进行部分测试:

mocha my-spec.js --timeout 5000

是否可以为所有测试全局更改默认超时?即当您调用时,默认超时值将不同于 2000 毫秒:

mocha my-spec.js

阅读 106

收藏
2022-06-28

共1个答案

小编典典

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

--timeout 5000

每当您在命令行运行 Mocha 时,它都会读取此文件并默认设置 5 秒的超时时间。

根据您的情况,另一种可能更好的方法是在测试文件的顶级describe调用中像这样设置它:

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

    // tests...
});

这将允许您仅基于每个文件设置超时。

如果您想要全局默认值 5000 但为某些文件设置不同的值,则可以使用这两种方法。


请注意,如果您要调用(或为您访问 Mocha 集合的this.timeout任何其他成员) ,通常不能使用箭头函数。this例如,
这通常不起作用

describe("something", () => {
    this.timeout(5000); //will not work

    // tests...
});

这是因为箭头函数this取自函数出现的范围。Mocha 将调用具有良好值的函数,this但该值不会在箭头函数内部传递。Mocha
的文档对此主题进行了说明:

不鼓励将箭头函数(“ambdas”)传递给 Mocha。由于 this 的词法绑定,这些函数无法访问 Mocha 上下文。

2022-06-28