Я недавно обновился с 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"');
});
});
Затем эти отдельные тесты проходят, но я не могу заставить их работать для реальных случаев использования.
Любые идеи, почему это происходит и как это исправить, будут очень признательны.