[英]Simple example using done and setTimeout inside a mocha test not working as expected
我有一个包含在 setTimeout 函数中的断言的简单测试,如下所示:
it('asserts after timeout', (done) => {
setTimeout(() => {
expect(1).to.be.equal(1);
done();
}, 500);
});
但是我收到以下错误:
错误:超过 2000 毫秒超时。 对于异步测试和钩子,确保调用“done()”; 如果返回 Promise,请确保它已解决。
在我仔细查看代码库中的每个单元测试之后,我意识到有一个对 sinon.useFakeTimers(); 的调用。 删除它解决了问题。
你的例子应该有效。 但是,当期望失败时,您会收到该错误。 为此,请将您的setTimeout
包装在Promise
并确保您在下一个 then 方法中调用done
。
将done
方法放在与您正在测试的区域相同的区域中被认为是bad practice
。
it('asserts after timeout', (done) => {
(new Promise((resolve,reject)=>{
setTimeout(() => {
resolve();
}, 500);
}))
.then(()=>expect(1).to.be.equal(1))
.then(()=>done(), done);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.