繁体   English   中英

Jest 如何测试 setTimeout 中抛出的错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM