Ember - асинхронные тесты интеграции компонентов не ждут, пока не будут возвращены асинхронные вызовы
Я испытываю трудности при тестировании асинхронных функций в тестах интеграции компонентов. Ввод запускает асинхронный вызов к конечной точке, и когда он возвращается, я отправляю действие. Я пытаюсь проверить, что действие отправляет правильные данные.
Я пытался поставить свое утверждение в wait()
вспомогательный, но утверждение получает удар до вызова (зависит от асинхронного) действия.
Вот пример, показывающий эту проблему: https://ember-twiddle.com/79f9a80c639b642e538803ac64a1cf9d?openFiles=tests.integration.components.test-comp-test.js%2Ctemplates.components.test-comp.hbs
Как я могу правильно написать свои тесты интеграции асинхронных компонентов?
1 ответ
Есть две вещи, которые не проходят ваш тест:
- Во-первых, никогда не используйте
setTimeout
(window.setTimeout
) запланировать будущую работу с Ember. Используйте способ Ember сделать это; Я имею в видуEmber.run.later
, За то же самое, что случилось со мной с приемочными испытаниями; см. следующий вопрос и просмотрите комментарии к ответу. Причина в том, что; Тестовые помощники Эмбер действительно не могут справитьсяsetTimeout
как мы и ожидаем. - У вас есть проблема в самом тесте; в обработчике действий, который вы написали в тесте, вам нужно изменить
name
атрибут вместо возврата обещания.
В любом случае, пожалуйста, смотрите следующий тиддл, который я обновил. Тестирование в целом с Эмбер - это боль; Поскольку я считаю, что нет надлежащей всеобъемлющей документации. Удачи!