我在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
块中的错误?
答案 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
describe
,before
等设置特定的超时时间,请在该功能中进行设置