全局更改默认超时或仅更改一次测试的最佳做法是什么?摩卡咖啡

what is a good practice to change the default timeout globally or for one test only? mocha

我正在使用 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');
  });
});

我遇到了这个错误

Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.

在打开其中一条更改默认超时的评论后,当然是在将箭头功能设置为常规后,测试按预期进行。
我想知道最佳做法是什么。也许最好更改 test 脚本中的默认超时?

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

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

最佳做法是在需要的范围内设置超时:

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 中的 所有内容 设置特定超时,请在 describe
  • 中设置它
  • 如果您需要 one beforeit 等的特定超时,请在该函数中设置它