【发布时间】:2022-01-19 07:42:16
【问题描述】:
我意识到我的测试套件正在运行带有setTimeouts 的代码。就目前而言,如果我使用useFakeTimers,我的测试套件就会中断。我现在无法通过所有测试来一次解决每个问题。我希望通过像这样立即运行他们的回调来绕过所有超时:
jest
.spyOn(global, 'setTimeout')
.mockImplementation((callback) => callback());
TS 告诉我This expression is not callable. No constituent of type 'TimerHandler' is callable.
我也试过这样破解它:
// in beforeEach
jest.spyOn(global, 'setTimeout');
// in test
const callback = mocked(global.setTimeout).mock.calls[0][0] as Function;
callback();
我很确定我过去做过这样的事情,以确保任何 setTimeout 回调立即运行而不是等待。我怎样才能做到这一点?我知道这不是最好的主意,但我现在有时间限制。
【问题讨论】:
标签: typescript jestjs