【发布时间】:2020-04-10 16:37:55
【问题描述】:
如何正确测试此功能。
- 设置超时
- 超时后回调
- 和递归调用
export function initScheduler(timeout: number, callback: () => Promise<void>): void {
setTimeout(() => {
callback().then(() => {
initScheduler(timeout, callback);
});
}, timeout);
}
我尝试了类似的东西
describe('initScheduler', () => {
it('should call on schedule', () => {
jest.useFakeTimers();
const timeout: number = 60000;
const callback: jest.Mock = jest.fn().mockResolvedValue(undefined);
initScheduler(timeout, callback);
expect(setTimeout).toHaveBeenCalledTimes(1);
expect(setTimeout).toHaveBeenLastCalledWith(expect.any(Function), timeout);
expect(callback).not.toBeCalled();
jest.advanceTimersByTime(timeout);
expect(callback).toBeCalled();
expect(setTimeout).toHaveBeenCalledTimes(2);
});
});
但最后一个期望返回 1
【问题讨论】:
标签: javascript typescript testing jestjs tdd