【问题标题】:What does this.timeout() do in a mocha test?this.timeout() 在 mocha 测试中做了什么?
【发布时间】:2021-01-05 18:08:12
【问题描述】:

我是 javascript 新手,我想知道 this.timeout() 在这个 mocha 测试中做了什么。

it('TestConnect', async function() {
    this.timeout(40000);
});

【问题讨论】:

  • @NjugunaMureithi 感谢分享,我已经研究过了,它说如何设置超时,但没有解释什么是超时。程序是在指定的秒数后退出还是程序在执行前等待指定的秒数?

标签: javascript node.js mocha.js


【解决方案1】:

考虑以下示例:

describe('a suite of tests', function() {
  this.timeout(500);

  it('should take less than 500ms', function(done) {
    setTimeout(done, 600); // fails
  });

  it('should take less than 500ms as well', function(done) {
    setTimeout(done, 250); // passes
  });
});

我已经研究过了,它说明了如何设置超时,但没有解释什么是超时。程序是在指定的秒数后退出还是程序在执行前等待指定的秒数?

程序不一定会退出,但上述(示例)套件会失败。 timeout 参数仅表示该套件中的测试,或者它必须在超时期限内调用 done 的特定测试,否则测试失败。

【讨论】:

    【解决方案2】:

    在 mocha 中,超时是在将测试设置为失败之前测试将等待done 的最长时间。

    因此,例如,您的 timeout 是 5000(5 秒),并且代码有一个循环,该循环花费了 7 秒来遍历所有对象。然后即使数据正常,测试也会失败,因为在调用done() 之前触发了超时。

    是真的不存在很好的解释,但在this docs中被定义为:

    设置超时阈值。

    阈值是您决定测试失败的时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-22
      • 1970-01-01
      • 2019-07-04
      相关资源
      最近更新 更多