Напишите шут-тест для повтора - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть простая функция повтора

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);
    });
...