У меня есть простая функция повтора
const retry = (fn: ((...args: any[]) => Promise<any>), ms: number): Promise<void> => new Promise((resolve) => {
fn()
.then(resolve)
.catch(() => {
setTimeout(() => {
// eslint-disable-next-line
console.log('retrying...');
retry(fn, ms).then(resolve);
}, ms);
});
});
Я пытаюсь написать тест для этой функции, но всегда получаю сообщение об ошибке, я знаю, что что-то упустил, но не понимаю, что :)
it('should retry call function until the function becomes success', () => {
jest.useFakeTimers();
let count = 0;
wait(1000).then(() => count += 1);
const fn = (): Promise<void> => new Promise((resolve, reject) => {
if (count > 0) {
resolve();
} else {
reject();
}
});
retry(fn, 100);
jest.runAllTimers();
expect(count).toEqual(1);
});