2016-03-17 2 views
0

J'ai récemment effectué une mise à jour de la version 0.8 vers la version 1.0 et mon application fonctionne correctement. Une chose qui m'a surpris et que je ne comprends toujours pas, c'est la façon dont les nouveaux testeurs d'acceptation devraient être utilisés.Ember Simple Auth 1.0 Assistants de test

précédemment (0,8) Je pourrais écrire mon test comme celui-ci et ils passeraient:

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

Cependant, après la mise à niveau et les réécrire dans le nouveau format:

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

Seule la première affirmation passe maintenant.

Si je les diviser en tests séparés iE:

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

Ensuite, ces tests individuels passent, mais je ne peux pas sembler les faire travailler pour les cas d'utilisation réelle.

Toutes les idées pour lesquelles cela se produit et comment y remédier seraient très appréciées.

Répondre

1

Donc, au cas où quelqu'un d'autre court dans cette question, je réussi à le résoudre en incluant les aides dans les serveurs andthen, comme ceci:

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