0

我在我的应用程序中使用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

4

3 回答 3

1

我是 Ember.SimpleAuth 的作者。

您是否将 Ember.SimpleAuth 配置为使用“/oauth/token”作为令牌端点?否则它将使用 '/token' 作为服务器端点,因此您的模拟不会有任何效果。

于 2014-01-02T16:16:26.327 回答
1

您在第一个代码块中的 indetation 似乎不正确。它应该是这样的:(注意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')
于 2014-01-04T13:19:05.227 回答
0

该问题是由 jQuery 版本与 mockjax 冲突引起的。在 marcoow 的帮助下,我发现了这个stackoverflow question。使用 jQuery < 1.10 它可以工作。嗯……不太好。

顺便说一下工作的jsBin:http: //jsbin.com/ASaSaRiX/11

编辑:您可以在此处 找到更多详细信息。该问题是由 jQuery 中的更改引起的。

@marcoow:一种解决方法是添加dataType: 'json'到 Ember.SimpleAuth 的请求选项中。也许您有时间查看上面链接中提供的信息。

于 2014-01-08T18:56:55.540 回答