Тестирование Ember Simple Auth в Ember App Kit с помощью sinon

Я хотел бы смоделировать ответы при входе на сервер при тестировании Ember Simple Auth в моем приложении Ember App Kit. Тем не менее, с помощью следующего кода я получаю непрозрачную ошибку "Неожиданный конец ввода", когда вызывается действие щелчка для функции посещения:

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');
  });
});

Поля ввода #identification и #password существуют, а кнопка отправки существует в поле, которое их содержит.

Я включаю sinon и qunit в мои заголовки. Я неправильно называю sinon или совершаю какую-то другую ошибку?

Изменить: Разрешение: также с помощью Sinon-Qunit проблема исчезла. Похоже, что вы не можете использовать sinon с тестами Quitit Ember App Kit без включения sinon-qunit.

Редактировать 2: я открываю исходный пример с тестами, которые проверяют ответы на вход в систему с помощью sinon здесь: https://github.com/digitalplaywright/eak-simple-auth

1 ответ

Решение

Я открываю исходный код с тестами, которые проверяют ответы на вход в систему с помощью sinon здесь по адресу https://github.com/digitalplaywright/eak-simple-auth

Пример сделан с использованием Ember App Kit, 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');
  });
});
Другие вопросы по тегам