#ember.js #ember-cli #qunit #ember-qunit #ember-testing
#ember.js #ember-cli #qunit #ember-qunit #ember-тестирование
Вопрос:
В моем приложении хранится некоторая информация о текущем сеансе localStorage
. Поэтому мне нужно, чтобы мои тесты очищались localStorage
до или после каждого отдельного теста во всех тестовых файлах. Есть ли способ определить beforeEach
afterEach
обратный вызов or глобально, а не для каждого тестового файла?
Ответ №1:
Мы завернули ember-qunit module
, moduleFor
и moduleForComponent
почти по той же причине. И мы импортируем эти оболочки вместо ember-qunit.
Другое предложение — обернуть localStorage сервисом. Никогда не обращайтесь к localStorage, кроме этой службы. Таким образом, вы можете использовать его макет в тестах.
Обновлено:
Как это реализовано:
import { moduleFor, moduleForModel, test, only, setResolver } from 'ember-qunit';
import { moduleForComponent as qunitModuleForComponent } from 'ember-qunit';
function moduleForComponent(name, description, callbacks) {
//our implementation that wraps "qunitModuleForComponent"
//eg. init commonly used services vs.
}
export {
moduleFor,
moduleForComponent,
moduleForModel,
test,
only,
setResolver
};
Плюсы:
- Предотвращает дублирование кода
- Централизовать управление модульным тестированием
- Легко добавлять новые методы для пользовательских нужд, такие как:
moduleForValidatableComponent
,moduleForLocalStorage
Минусы:
- ember-cli генерирует тесты, которые импортируются
ember-qunit
. Разработчики должны изменить операторы импорта на эти оболочки. Иногда об этом забывали. (Когда тест завершается неудачно, разработчики помнят, что им нужно изменить инструкции импорта.) - Для некоторых тестов перенос не требуется.
Комментарии:
1. Спасибо за совет о том, как обернуть localStorage сервисом. Но я все же предпочитаю то, что вы упомянули об обертывании этих методов ember-qunit, учитывая, что эта функция может стать удобной за пределами моей текущей конкретной потребности в ней. Не могли бы вы подробнее рассказать о том, как работает эта упаковка?