我正在尝试为我的 Ember 应用程序执行集成/验收测试。我正在专门测试用户身份验证(例如——提交登录表单)和需要经过身份验证的用户的受保护页面/状态。
关于我的应用程序的一般说明:
- 使用Ember 应用套件
- 使用ember-simple-auth进行身份验证
- 我有api-stubs用于我的 ember-simple-auth 表单,可以使用 Devise 授权器进行访问。在浏览器中运行应用程序时,这些工作正常。
我有三个问题:
1. 设计身份验证器和临时存储
从 ember-simple-auth API 中,它指的是使用 Ephemeral 存储进行测试。我已经这样做了,很像这样。但是,会话似乎仍存储在本地存储中。如果我没有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', 'foo@bar.com')
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', 'foo@bar.com')
fillIn('input#password', 'password')
click('button[type="submit"]')
andThen(->
equal(true, true) # Never runs, tests start over, infinite loop begins
)
)
3. EAK api-stubs & Testem
EAK 的 api-stub似乎不适用于 Testem,因此当通过命令行/Testem 运行时,这些验收测试中的“登录”过程会失败。
我尝试设置 sinon.js,但上述问题使我无法确定它是否真正正常工作。使用 ember-simple-auth 成功存根登录用户的最佳方法是什么?是否可以将 EAK 的 api-stub 用于 Testem?