Помощники по тестированию Ember Simple Auth 1.0

Я недавно обновился с 0.8 до 1.0, и мое приложение работает правильно.

Одна вещь, которая меня удивила, и я до сих пор не понимаю, как следует использовать новые помощники приемочного теста.

Раньше (0.8) я мог написать свой тест так, и он прошел бы:

test('sign in and sign out', function(assert) {
  visit('/');

  andThen(function() {
    assert.ok(find(':contains("Sign In")').length,
      'expected to see "Sign In"');
  });

  authenticateSession();

  andThen(function() {
    assert.ok(find(':contains("Sign Out")').length,
      'expected to see "Sign Out"');
  });

  invalidateSession();

  andThen(function() {
    assert.ok(find(':contains("Sign In")').length,
      'expected to see "Sign In"');
  });
});

Однако после обновления и перезаписи их в новом формате:

import { authenticateSession, invalidateSession } from 'instatube-app/tests/helpers/ember-simple-auth';

test('sign in and sign out', function(assert) {
  visit('/');

  andThen(function() {
    assert.ok(find(':contains("Sign In")').length,
      'expected to see "Sign In"');
  });

  authenticateSession(application);

  andThen(function() {
    assert.ok(find(':contains("Sign Out")').length,
      'expected to see "Sign Out"');
  });

  invalidateSession(application);

  andThen(function() {
    assert.ok(find(':contains("Sign In")').length,
      'expected to see "Sign In"');
  });
});

Теперь проходит только первое утверждение.

Если я разделю их на отдельные тесты, т.е.:

test('when signed out display sign in button', function(assert) {
  visit('/');

  andThen(function() {
    assert.ok(find(':contains("Sign In")').length,
      'expected to see "Sign In"');
  });

});

test('when signed in display sign out button', function(assert) {
  authenticateSession(application);
  visit('/');

  andThen(function() {
    assert.ok(find(':contains("Sign Out")').length,
      'expected to see "Sign Out"');
  });
});

Затем эти отдельные тесты проходят, но я не могу заставить их работать для реальных случаев использования.

Любые идеи, почему это происходит и как это исправить, будут очень признательны.


person Chris    schedule 17.03.2016    source источник


Ответы (1)


Поэтому, если кто-то еще столкнется с этой проблемой, мне удалось решить ее, включив помощников в официантов andThen, например:

import { authenticateSession, invalidateSession } from 'instatube-app/tests/helpers/ember-simple-auth';

test('sign in and sign out', function(assert) {
  visit('/');

  andThen(function() {
    assert.ok(find(':contains("Sign In")').length,
      'expected to see "Sign In"');
    authenticateSession(application);
  });

  andThen(function() {
    assert.ok(find(':contains("Sign Out")').length,
      'expected to see "Sign Out"');
    invalidateSession(application);
  });

  andThen(function() {
    assert.ok(find(':contains("Sign In")').length,
      'expected to see "Sign In"');
  });
});
person Chris    schedule 18.03.2016