使用sinon在Ember应用套件中测试Ember Simple Auth



在我的Ember App Kit应用程序中测试Ember Simple Auth时,我想模拟服务器登录响应。然而,使用以下代码,当在访问函数上调用点击操作时,我得到了一个不透明的错误"输入意外结束":

var App;
module('Acceptances - SignIn', {
  setup: function(){
    App = startApp();
    this.xhr                = sinon.useFakeXMLHttpRequest();
    this.server             = sinon.fakeServer.create();
    this.server.autoRespond = true;
    sinon.spy(Ember.$, 'ajax');

    this.server.respondWith('POST', '/oauth/token', [
      200,
      { 'Content-Type': 'application/json' },
      '{"access_token":"secret token 2!","token_type":"bearer","expires_in":7200}'
    ]);
  },
  teardown: function() {
    Ember.run(App, 'destroy');
  }
});
test('authentication works correctly', function() {   
  visit('/login').fillIn('#identification', "foo@bar.com").fillIn('#password', "password").click('button[type="submit"]').then(function() {
    ok(!exists('a:contains(Login)'), 'Login button is not displayed when authenticated');
  });
});

存在#标识和#密码输入字段,并且包含它们的字段上存在提交按钮。

我把西农和库尼特列入了我的标题。我打西农的电话是错了还是搞错了?

编辑:解决方案:通过包括sinon qunit,问题消失了。似乎你不能在不包括sinon qunit的情况下将sinon与Ember App Kit qunit测试一起使用。

编辑2:我在这里开源了一个带有模拟登录响应的测试的示例:https://github.com/digitalplaywright/eak-simple-auth

我开源了一个带有测试的示例,该示例模拟了sinon的登录响应https://github.com/digitalplaywright/eak-simple-auth

该示例是使用Ember应用工具包、Ember Simple Auth和Ember制作的。

这就是我在中使用模拟登录响应的方式

var App;
module('Acceptances - SignIn', {
  setup: function(){
    App = startApp();
    this.xhr                = sinon.useFakeXMLHttpRequest();
    this.server             = sinon.fakeServer.create();
    this.server.autoRespond = true;
    sinon.spy(Ember.$, 'ajax');

    this.server.respondWith('POST', '/oauth/token', [
      200,
      { 'Content-Type': 'application/json' },
      '{"access_token":"secret token 2!","token_type":"bearer","expires_in":7200}'
    ]);
  },
  teardown: function() {
    Ember.run(App, 'destroy');
  }
});
test('authentication works correctly', function() {
  visit('/').then(function() {
    ok(exists('a:contains(Login)'), 'Login button is displayed when not authenticated');
    ok(!exists('a:contains(Logout)'), 'Logout button is not displayed when not authenticated');
  });
  visit('/login').fillIn('#identification', "foo@bar.com").fillIn('#password', "password").click('button[type="submit"]').then(function() {
    ok(!exists('a:contains(Login)'), 'Login button is not displayed when authenticated');
    ok(exists('a:contains(Logout)'), 'Logout button is displayed when authenticated');
  });
});

相关内容

  • 没有找到相关文章

最新更新