Тестирование обещания с использованием setTimeout с помощью Jest ⇐ Javascript
Тестирование обещания с использованием setTimeout с помощью Jest
Я пытаюсь понять асинхронное тестирование Jest.
В моем модуле есть функция, которая принимает логическое значение и возвращает обещание значения. Функция-исполнитель вызывает setTimeout, и в обратном вызове с истекшим временем ожидания обещание разрешается или отклоняется в зависимости от первоначально заданного логического значения. Код выглядит следующим образом:
const withPromises = (проходит) => новое обещание((разрешить, отклонить) => { const act = () => { console.log(`в обратном вызове таймаута передано ${passes}`) если(проходит) разрешить('что-то') иначе отклонить (новая ошибка («ничего»)) } console.log('в определении обещания') setTimeout (действие, 50) }) экспортировать по умолчанию {withPromises} Я хотел бы проверить это с помощью Jest. Я предполагаю, что мне нужно использовать фиктивные таймеры, предоставляемые Jest, поэтому мой тестовый сценарий выглядит примерно так:
import { withPromises } из './request_something' jest.useFakeTimers() описать('используя обещание и фиктивные таймеры', () => { afterAll(() => { jest.runAllTimers() }) test('получает значение, если условия благоприятствуют', () => { ожидать.утверждения(1) вернуться с обещаниями (правда) .then(решено => { ожидать(разрешено).toBe('что-то') }) }) }) Я получаю следующую ошибку/неудачный тест независимо от того, вызываю ли я jest.runAllTimers()
Тайм-аут — асинхронный обратный вызов не был вызван в течение времени ожидания, указанного в jasmine.DEFAULT_TIMEOUT_INTERVAL. Можете ли вы объяснить, в чем я ошибаюсь и что мне следует сделать, чтобы пройти тест и обещание выполнилось так, как ожидалось?
Я пытаюсь понять асинхронное тестирование Jest.
В моем модуле есть функция, которая принимает логическое значение и возвращает обещание значения. Функция-исполнитель вызывает setTimeout, и в обратном вызове с истекшим временем ожидания обещание разрешается или отклоняется в зависимости от первоначально заданного логического значения. Код выглядит следующим образом:
const withPromises = (проходит) => новое обещание((разрешить, отклонить) => { const act = () => { console.log(`в обратном вызове таймаута передано ${passes}`) если(проходит) разрешить('что-то') иначе отклонить (новая ошибка («ничего»)) } console.log('в определении обещания') setTimeout (действие, 50) }) экспортировать по умолчанию {withPromises} Я хотел бы проверить это с помощью Jest. Я предполагаю, что мне нужно использовать фиктивные таймеры, предоставляемые Jest, поэтому мой тестовый сценарий выглядит примерно так:
import { withPromises } из './request_something' jest.useFakeTimers() описать('используя обещание и фиктивные таймеры', () => { afterAll(() => { jest.runAllTimers() }) test('получает значение, если условия благоприятствуют', () => { ожидать.утверждения(1) вернуться с обещаниями (правда) .then(решено => { ожидать(разрешено).toBe('что-то') }) }) }) Я получаю следующую ошибку/неудачный тест независимо от того, вызываю ли я jest.runAllTimers()
Тайм-аут — асинхронный обратный вызов не был вызван в течение времени ожидания, указанного в jasmine.DEFAULT_TIMEOUT_INTERVAL. Можете ли вы объяснить, в чем я ошибаюсь и что мне следует сделать, чтобы пройти тест и обещание выполнилось так, как ожидалось?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Тестирование на стресс-тестирование конечных точек API с использованием вредителей
Anonymous » » в форуме Php - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-