Как нам заставить Trek’s Pretender хорошо работать с тестированием Ember?

#ember.js

#ember.js

Вопрос:

Итак, мой текущий проект Ember построен с использованием Ember App Kit. В моих тестах используется замечательный httpRespond для макетирования ajax-запросов.

Однако я начал замечать, что, хотя httpRespond великолепен, вы действительно проверяете только то, как ваше приложение реагирует на ответы от API, а не то, как ваше приложение реагирует на взаимодействия пользователя. Примером этого, я думаю, является отправка формы с проверкой полей на стороне сервера.

С помощью httpRespond вы имитируете ответ, который будет возвращен независимо от того, как выглядел запрос. Итак, я могу, по сути, нажать кнопку отправки в своей форме и успешно отправить форму, не заполнив никаких полей. Такое ощущение, что мы что-то упускаем.

Введите Trek’s Pretender. Это немного похоже на расширенную версию httpRespond. Это немного похоже на макет сервера, но просто издевается над xhr, как httpRespond. За исключением того, что вы получаете доступ к запросу, который вы можете проверить, прежде чем решить, какой ответ вернуть.

Мне очень нравится эта идея, и я хочу ее использовать. Однако….

Претендент еще не знает о тестировании Ember. httpRepond понимает асинхронную работу Ember и будет ждать завершения асинхронных событий в Ember, прежде чем продолжить тест. Однако Pretender пока этого не делает.

Например, если я нажму на ссылку в своем приложении Ember, которая запускает несколько разных асинхронных событий, мой тест не будет ждать завершения этих асинхронных событий, прежде чем продолжить, и, следовательно, тест завершит выполнение до завершения асинхронных событий.

Что подводит меня к моему вопросу…

Как нам сделать так, чтобы претендент знал о тестировании Ember?

Trek упомянул, что это то, что ему еще предстоит сделать, но я не уверен, когда у него будет время, чтобы приступить к этому. Так что я бы с удовольствием запустил его, если это возможно.

Есть ли у кого-нибудь какие-нибудь мысли о том, как мы могли бы попытаться это сделать?

Комментарии:

1. «Например, если я нажму на ссылку в своем приложении Ember, которая запускает несколько разных асинхронных событий, мой тест не будет ждать завершения этих асинхронных событий, прежде чем продолжить, и, следовательно, тест завершит выполнение до завершения асинхронных событий». можете ли вы привести пример. У меня возникли проблемы с анализом этого.

2. Да, будет делать Trek. Я тоже имел в виду, но у меня не было шанса. Сделаю все возможное, чтобы в ближайшее время что-нибудь вам передать

Ответ №1:

У меня большой успех с ember-cli-mirage. Он находится поверх pretender и позволяет создавать как приспособления для разработки, так и фабрики для использования в тестах. Если у вас все еще возникают проблемы с этим или у кого-либо еще, это действительно простой способ получить контроль над данными разработки ваших приложений.