Jest простой асинхронный с таймером не работает - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь получить простой асинхронный / ожидающий тест, работающий с setTimeout, но ничего не происходит, когда я его запускаю:

const testing = async () => {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('result');
        }, 500);
    });
}

jest.useFakeTimers()

it('tests async await', async () => {
    const r = await testing();
    expect(r).toBe('result');

    jest.runAllTimers();
});

Хорошо бы использовать реальный setTimeout, как в Jasmine, но в Jest кажется, что вы должны использовать фальшивые. Поэтому я включил jest.useFakeTimers() и jest.runAllTimers(), но это не помогло.

Тест застревает и никогда не завершается. Есть идеи, в чем может быть проблема?

1 Ответ

1 голос
/ 24 июня 2019

Попробуйте следующее:

it('tests async await', async () => {
    jest.useFakeTimers();
    testing = async () => {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          resolve('result');
        }, 500);
      });
    };
    const asyncResult = testing();
    jest.runAllTimers();
    const r = await asyncResult;
    expect(r).toBe('result');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...