Я пытаюсь выполнить интеграционные/приемочные тесты для моего приложения Ember. Я специально тестирую аутентификацию пользователей (например, отправку формы входа) и защищенные страницы/состояния, которые требуют аутентификации пользователей.
Общие примечания о моем приложении:
- Использование набора приложений Ember
- Использование ember-simple-auth для аутентификации
- У меня есть заглушки API для моего Ember -simple-auth формы для доступа с помощью авторизатора Devise. Они отлично работают при запуске приложения в браузере.
У меня три проблемы:
1. Разработайте аутентификатор и временное хранилище
Из API ember-simple-auth это относится к использованию эфемерного хранилища для тестов. Я сделал так, много вот так. Однако кажется, что сеансы все еще сохраняются в локальном хранилище. Если я не выполняю localStorage.clear()
в каждом тесте, установка/разборка завершается неудачно, потому что я остаюсь в системе, когда каждый тест запускается после первого.
Могу ли я предотвратить сохранение сеанса в локальном хранилище между каждым тестом, когда я использую аутентификатор Devise для своего приложения?
2. Множественные приемочные испытания
Если я попытаюсь зайти пользователя в более чем 1 test()
, мои тесты превращаются в бесконечный цикл. Первый тест будет пройден, но когда второй тест отправляет форму входа, весь набор тестов останавливается и перезагружается.
Интеграционный тест № 1
App = null
module('Acceptance - Page #1',
setup: ->
App = startApp()
teardown: ->
Ember.run(App, 'destroy')
)
test('page #1 behind authentication', ->
expect(1)
visit('/page-1')
fillIn('input#identification', '[email protected]')
fillIn('input#password', 'password')
click('button[type="submit"]')
andThen(->
equal(true, true) # This test works fine
)
)
Интеграционный тест №2
App = null
module('Acceptance - Page #2',
setup: ->
App = startApp()
teardown: ->
Ember.run(App, 'destroy')
)
test('page #2 behind authentication', ->
expect(1)
visit('/page-2')
fillIn('input#identification', '[email protected]')
fillIn('input#password', 'password')
click('button[type="submit"]')
andThen(->
equal(true, true) # Never runs, tests start over, infinite loop begins
)
)
3. API-заглушки EAK и Testem
заглушки API EAK, похоже, не быть доступным для Testem, поэтому процесс «входа» в эти приемочные тесты при запуске через командную строку/Testem завершается ошибкой.
Я попытался настроить sinon.js, но вышеупомянутые проблемы помешали мне решить, работает ли он на самом деле правильно или нет. Каков наилучший способ успешно заглушить вход пользователя с ember-simple-auth? Можно ли использовать API-заглушки EAK для Testem?