全局更改默认超时或仅对一个测试更改默认值是什么好习惯?摩卡咖啡

时间:2019-03-24 16:39:50

标签: javascript mocha ecmascript-7

我在before块中使用try catch钩子来调用try块中的某些功能。因此before块在每个it之前运行。

describe('Function response', ()=> {
  // this.timeout(5000); //here
  let response;
  before(async () => {
   // this.timeout(500000); //or here
    try {
      response = await myFunction(argument);
    } catch (err) {
      assert.fail(err);//seems doesn't work
    }
  });
  it('function response to be an array', () => {
    expect(response).to.be.an('array');
  });
});

我收到此错误

  

错误:超时超过2000毫秒。对于异步测试和挂钩,请确保调用了“ done()”;如果返回了Promise,请确保它可以解决。

打开其中一个将默认超时更改为默认功能的注释后(当然使箭头功能变为常规),测试将按预期进行。
我想知道什么是最佳实践。也许最好在test脚本中更改默认超时时间?

"test": "mocha -r ts-node/register src/**/*.spec.ts --timeout 5000

也许我没有正确处理catch块中的错误?

1 个答案:

答案 0 :(得分:1)

最佳做法是将超时设置为所需的范围:

std::vector<int>()
  • 如果您需要特定的超时时间来进行所有测试,请在全局级别进行设置
  • 如果您需要describe('something', function() { this.timeout(100); // sets the timeout for everything in "describe" before(function(done) { this.timeout(500); // sets the timeout ONLY for "before" setTimeout(done, 450); // <= this works }); it('should do something', function (done) { setTimeout(done, 150); // <= this times out }); }); 中的所有内容有特定的超时时间,请在describe
  • 中进行设置
  • 如果您需要为一个 describebefore等设置特定的超时时间,请在该功能中进行设置