javascript 更改mocha的默认超时

wbgh16ku  于 2023-08-02  发布在  Java
关注(0)|答案(5)|浏览(119)

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

mocha my-spec.js

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

mocha my-spec.js --timeout 5000


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

mocha my-spec.js

xfyts7mz

xfyts7mz1#

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

--timeout 5000

字符串
每当你在命令行运行Mocha时,它都会读取这个文件,并默认设置5秒的超时。
另一种可能更好的方法是在测试文件中的顶级describe调用中这样设置:

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

    // tests...
});


这将允许您仅在每个文件的基础上设置超时。
如果希望全局默认值为5000,但对某些文件设置了不同的值,则可以使用这两种方法。
请注意,如果要调用this.timeout(或访问Mocha为您设置的this的任何其他成员),则通常不能使用箭头函数。例如,这通常不起作用

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

    // tests...
});


这是因为箭头函数从函数出现的作用域中获取this。Mocha将调用具有良好this值的函数,但该值不会在箭头函数内部传递。Mocha的文档在这个主题上说:
不建议将箭头函数(“lambdas”)传递给Mocha。由于this的词法绑定,这样的函数无法访问Mocha上下文。

zsbz8rwp

zsbz8rwp2#

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

it('Some test', () => {

}).timeout(5000)

字符串

wvt8vs2t

wvt8vs2t3#

为了完整性而添加此内容。如果你(像我一样)在package.json文件中使用脚本,只需将--timeout选项添加到mocha:

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

字符串
然后,您可以运行npm run test来运行您的测试套件,并将超时设置为10,000毫秒。

ljsrvy3e

ljsrvy3e4#

在当前版本的Mocha中,可以像这样全局更改超时:

mocha.timeout(5000);

字符串
只要在测试套件中的任何地方添加上面的行,最好是在规范的顶部或单独的测试帮助程序中。
在旧版本中,只能在浏览器中,您可以使用mocha.setup更改全局配置。

mocha.setup({ timeout: 5000 });


本文档不涉及全局超时设置,但提供了一些关于如何在其他常见场景中更改超时的示例。

7vux5j2d

7vux5j2d5#

以下是我在TypeScript中的工作:

describe('WriteCSV', () => {
  it('should write the CSV file correctly', async function (this: Mocha.Context) 
  {
    this.timeout(1000);
  });
});

字符串

相关问题