如何在 Jest 单元测试中调用实际的回调函数

时间:2021-03-18 20:39:17

标签: javascript reactjs typescript unit-testing callback

我有以下一段代码。

window.requestAnimationFrame(() => {
  process("postProcess");
  window.clearTimeout();
});

当我为此编写单元测试时,我可以断言 requestAnimationFrame 被调用但不能在 process 函数和 clearTimeout 上,因为 requestAnimationFrame 是 jest.fn()。 unitTesting 时如何调用实际的回调函数?

1 个答案:

答案 0 :(得分:0)

您已经评论说您已经能够模拟 requestAnimationFrame 并且可以断言它被调用了。这实际上让你得到答案。

将您的玩笑模拟从 jest.fn() 扩展到立即调用作为参数传递给它的回调的实现。

requestAnimationFrame.mockImplementation((callback) => callback())

因此,当您的测试运行时,processwindow.clearTimeout 将立即被调用;只要您还在嘲笑或监视这些函数,您就可以断言这些函数也被调用了。

相关问题