我在我的应用程序中使用ember-simple-auth。对于我的测试,我将QUnit与jquery-mockjax一起使用。但我没有接受我的测试,login with correct credentials
,以模拟回应。如果我没有嘲笑,下面的测试就可以了。模拟的响应看起来就像是服务器响应。
我的问题是,如何模仿ember-simple-auth的响应?
test "with correct credentials", ->
expect(2)
response =
access_token : "92d50f562503e40fe783c2ebf359e0c2b37fa80758e2e3603d7e3e82a485522a"
expires_in : 7200
token_type : "bearer"
# if I remove the following line, the test works
mock_http('/oauth/token', response, 200)
visit("login")
.fillIn('#identification', 'test@test.de')
.fillIn('#password', 'tester')
.click('.btn-success').then ->
ok(find("a:contains('Logout')").length, 'logout link not visible')
ok(not find("a:contains('Login')").length, 'login link still visible')
以下测试也适用于模拟:
test "with wrong credentials", ->
expect(2)
response =
error : 'some error occured'
mock_http('/oauth/token', response, 401)
visit("login")
.fillIn('#identification', 'test')
.fillIn('#password', 'wrong')
.click('.btn-success').then ->
ok(not find("a:contains('Logout')").length, 'logout link not visible')
ok(find("a:contains('Login')").length, 'login link still visible')
修改
在jsBin之后,显示问题:http://jsbin.com/ASaSaRiX/6/edit
答案 0 :(得分:1)
我是Ember.SimpleAuth的作者。
您是否将Ember.SimpleAuth配置为使用'/ oauth / token'作为令牌端点?否则它将使用'/ token'作为服务器端点,因此你的模拟不会有任何影响。
答案 1 :(得分:1)
您在第一个代码块中的缩进似乎不正确。它应如下所示:(注意mock_http
行的缩进变化)
test "with correct credentials", ->
expect(2)
response =
access_token : "92d50f562503e40fe783c2ebf359e0c2b37fa80758e2e3603d7e3e82a485522a"
expires_in : 7200
token_type : "bearer"
# if I remove the following line, the test works
mock_http('/oauth/token', response, 200)
visit("login")
fillIn('#identification', 'test@test.de')
fillIn('#password', 'tester')
click('.btn-success').then ->
ok(find("a:contains('Logout')").length, 'logout link not visible')
ok(not find("a:contains('Login')").length, 'login link still visible')
答案 2 :(得分:0)
问题是由jQuery版本与mockjax冲突引起的。在marcoow的帮助下,我找到了stackoverflow question。使用jQuery< 1.10它有效。嗯......那不太好。
顺便说一句工作的jsBin:http://jsbin.com/ASaSaRiX/11
修改强> 您可以找到更详细的信息here。问题是由jQuery中的更改引起的。
@marcoow:一个解决方法是将dataType: 'json'
添加到Ember.SimpleAuth的请求选项中。也许您有时间查看上面链接中给出的信息。