2015-02-19 4 views
1

У меня есть более раннее приложение Ember-cli, которое я только что обновил до всех последних зависимостей и форматов файлов, я запустил ember init с [email protected], но когда я пытаюсь написать приемочный тест с помощью вспомогательного помощника visit(), внутренний wait функция никогда не решает.Когда тест на ember-тест очистит таймеры?

Самых дальний я был в состоянии проследить эту проблему является в wait функции в файле bower_components/ember/ember.js, на линии if (run.hasScheduledTimers() || run.currentRunLoop) { return; }

Существует таймер на заднем плане, но снова и снова, возвращается цикл здесь, и у него никогда не будет возможности очистить таймер.

Я уверен, что таймер должен убедиться, что помощник wait ждет после запроса ajax, но запрос ajax давно разрешен. Если бы были еще ожидающие запросы, мы бы вышли из этой функции.

Любое понимание этого процесса было бы весьма полезно!

+0

Я использую Ember.run.later() в своем приложении, похоже, что я могу дублировать эту проблему: http://discuss.emberjs.com/t/proper-way-to-handler-timers- w-ember-testing/4693/2 – DanF

ответ

3

У меня был экземпляр Em.run.later в моем приложении в цикле, чтобы рекурсивно проверять таймауты. Это не редкость, оказывается!

Моим решением было положить блок run.later в условную проверку для текущей среды и отключить его при тестировании.

+0

отключить, так как вы удаляете функции приложения в тестовом env или вы имеете в виду, что у вас есть функция с помощью другого метода в тестовом env? @DanF – SupaIrish

+0

Да, я удалил функцию тайм-аута приложения в тестовом режиме. Я признаюсь, это, вероятно, не будет работать в каждом сценарии, но я придумал некоторые другие исправления для этих сценариев. Если у вас есть ситуация, когда вам нужно жить вживую, отправьте ссылку здесь, я поделюсь решениями. – DanF