Глобальный beforeEach / afterEach для тестов ember qunit

#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, учитывая, что эта функция может стать удобной за пределами моей текущей конкретной потребности в ней. Не могли бы вы подробнее рассказать о том, как работает эта упаковка?