Ember - асинхронные тесты интеграции компонентов не ждут, пока не будут возвращены асинхронные вызовы

Я испытываю трудности при тестировании асинхронных функций в тестах интеграции компонентов. Ввод запускает асинхронный вызов к конечной точке, и когда он возвращается, я отправляю действие. Я пытаюсь проверить, что действие отправляет правильные данные.

Я пытался поставить свое утверждение в wait() вспомогательный, но утверждение получает удар до вызова (зависит от асинхронного) действия.

Вот пример, показывающий эту проблему: https://ember-twiddle.com/79f9a80c639b642e538803ac64a1cf9d?openFiles=tests.integration.components.test-comp-test.js%2Ctemplates.components.test-comp.hbs

Как я могу правильно написать свои тесты интеграции асинхронных компонентов?

1 ответ

Решение

Есть две вещи, которые не проходят ваш тест:

  1. Во-первых, никогда не используйте setTimeout (window.setTimeout) запланировать будущую работу с Ember. Используйте способ Ember сделать это; Я имею в виду Ember.run.later, За то же самое, что случилось со мной с приемочными испытаниями; см. следующий вопрос и просмотрите комментарии к ответу. Причина в том, что; Тестовые помощники Эмбер действительно не могут справиться setTimeout как мы и ожидаем.
  2. У вас есть проблема в самом тесте; в обработчике действий, который вы написали в тесте, вам нужно изменить name атрибут вместо возврата обещания.

В любом случае, пожалуйста, смотрите следующий тиддл, который я обновил. Тестирование в целом с Эмбер - это боль; Поскольку я считаю, что нет надлежащей всеобъемлющей документации. Удачи!

Другие вопросы по тегам