[英]Jest how to test error thrown in setTimeout
我的代码如下所示:
const myFunc =() =>{
setTimeout(()=>throw new Error('err within setTimeout'),500);
}
如何在 Jest 框架中测试抛出错误?
我看到的唯一方法是模拟setTimeout
本身以使其同步运行。 jest.useFakeTimers()
+ jest.runAllTimers()
可以为你做到这一点:
jest.useFakeTimers();
it("throws", () => {
expect.assertions(1); // don't miss that to ensure exception has been thrown!
myFunc();
try {
jest.runAllTimers();
} catch(e) {
expect(e.message).toEqual('err within setTimeout');
}
});
您可以像这样测试它:
it('should throw an error', (done) => {
myFunc();
setTimeout(function() {
expect(myFunc).toThrowError('err within setTimeout');
done();
}, 1000);
})
检查这篇文章
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.