Как настроить тесты mocha для запуска инициализаторов Ember, чтобы определить внедренные объекты?
Мое приложение Ember внедряет объект "i18n" в контейнер через инициализатор, который позже ищется с помощью "this.container.lookup('i18n:main')" в вычисляемом свойстве контроллера'оряд Language'.
Модульный тест mocha, который проверяет свойство контроллера 'extendedLanguage', завершается неудачей из-за того, что "i18n не определен". Как я могу настроить тесты mocha для запуска инициализаторов приложений Ember, чтобы внедренные объекты определялись при поиске из контейнера во время модульного тестирования?
1 ответ
Я обнаружил, что основная проблема (как вы упомянули) заключается в том, что файл start-app.js не запускается при установке mocha. Я тоже некоторое время боролся с этим, но, наконец, усовершенствовал процесс, чтобы Эмбер и Мокка играли хорошо. Сначала вы должны правильно настроить ember-cli-mocha и ember-mocha. Затем вы можете явно импортировать и вызывать функцию startApp в вашем файле tests/test-helper.js, чтобы запустить Ember и внедрить помощников для тестирования, как это обычно происходит с qunit. Вот что сработало для меня с ember-cli 1.13.1.
bower install ember-mocha
bower install ember-test-helpers
npm install ember-cli-mocha
ember install ember-cli-mocha (say Y to overwrite test-helper.js)
Тогда в tests/test-helper.js
// tests/test-helper.js
import resolver from './helpers/resolver';
import { setResolver } from 'ember-mocha';
// startApp doesn't run with mocha... so we run it explicitly
import startApp from "./helpers/start-app";
startApp();
setResolver(resolver);
После этого вы можете создать сгенерировать маршрут или контроллер, а ember-cli-mocha создаст тест, и у вас должен быть доступ к таким помощникам, как visit() и currentURL(); Хотя я обнаружил, что для правильной работы необходимо настроить маршрут и контроллер.
it("should have use of ember's test helpers", function() {
visit("/mocha-test");
andThen(function() {
var url = currentURL();
expect(url).to.equal("/mocha-test");
});
});