mocha async/await 测试因超时而失败
mocha async/await test failed with timeout
我想用 Mocha
测试异步代码。
我遵循了本教程 testing-promises-with-mocha。最后,它说最好的方法是async/await。
以下是我的代码,我打算将 setTimeout 设置得比 Mocha 默认值长。
describe('features', () => {
it('assertion success', async() => {
const resolvingPromise = new Promise( resolve => {
setTimeout(() => {
resolve('promise resolved')
}, 3000)
})
const result = await resolvingPromise
expect(result).to.equal('promise resolved')
})
})
Mocha 给我的错误如下:
Error: Timeout of 2000ms exceeded. For async tests and hooks,
ensure "done()" is called; if returning a Promise, ensure it resolves...
如何解决错误?简单设置mocha --timeout 10000
更长?
感谢您的宝贵时间!
Mocha: 5.2.0
Chai: 4.2.0
对于异步测试,您应该调用 done()
回调。
describe('features', () => {
it('assertion success', async(done) => { // pass done here
const resolvingPromise = new Promise( resolve => {
setTimeout(() => {
resolve('promise resolved')
}, 3000)
})
const result = await resolvingPromise
expect(result).to.equal('promise resolved')
done() // invoke at end
})
})
Mocha 有超时控制。 Mocha docs
语法是:
it('should take less than 500ms', function(done) {
this.timeout(5000); // 5 seconds
setTimeout(done, 3000);
});
你的例子:
describe('features', () => {
it('assertion success', async (done) => {
this.timeout(5000);
const resolvingPromise = new Promise(resolve => {
setTimeout(() => resolve('promise resolved'), 3000)
});
const result = await resolvingPromise();
expect(result).to.equal('promise resolved');
done();
});
});
正如您提到的,--timeout 标志可以完成这项工作。
node ./node_modules/mocha/bin/mocha --timeout <milliseconds>
如果要在整个项目中设置默认超时,您还可以检查:Change default timeout for mocha。
我想用 Mocha
测试异步代码。
我遵循了本教程 testing-promises-with-mocha。最后,它说最好的方法是async/await。
以下是我的代码,我打算将 setTimeout 设置得比 Mocha 默认值长。
describe('features', () => {
it('assertion success', async() => {
const resolvingPromise = new Promise( resolve => {
setTimeout(() => {
resolve('promise resolved')
}, 3000)
})
const result = await resolvingPromise
expect(result).to.equal('promise resolved')
})
})
Mocha 给我的错误如下:
Error: Timeout of 2000ms exceeded. For async tests and hooks,
ensure "done()" is called; if returning a Promise, ensure it resolves...
如何解决错误?简单设置mocha --timeout 10000
更长?
感谢您的宝贵时间!
Mocha: 5.2.0
Chai: 4.2.0
对于异步测试,您应该调用 done()
回调。
describe('features', () => {
it('assertion success', async(done) => { // pass done here
const resolvingPromise = new Promise( resolve => {
setTimeout(() => {
resolve('promise resolved')
}, 3000)
})
const result = await resolvingPromise
expect(result).to.equal('promise resolved')
done() // invoke at end
})
})
Mocha 有超时控制。 Mocha docs
语法是:
it('should take less than 500ms', function(done) {
this.timeout(5000); // 5 seconds
setTimeout(done, 3000);
});
你的例子:
describe('features', () => {
it('assertion success', async (done) => {
this.timeout(5000);
const resolvingPromise = new Promise(resolve => {
setTimeout(() => resolve('promise resolved'), 3000)
});
const result = await resolvingPromise();
expect(result).to.equal('promise resolved');
done();
});
});
正如您提到的,--timeout 标志可以完成这项工作。
node ./node_modules/mocha/bin/mocha --timeout <milliseconds>
如果要在整个项目中设置默认超时,您还可以检查:Change default timeout for mocha。