2013-09-21 1 views
11

Nei test di accettazione, vorrei simulare il clic del pulsante Indietro e le transizioni dei risultati.Come simulare il pulsante Indietro durante il test delle app Ember.js?

Ho il seguente, ma ho la sensazione che sia sbagliato.

test("back to search page", function(){ 
    visit('/') 
    .then(function(){ 
     return fillIn('.search input', 'hi'); 
    }) 
    .then(function(){ 
     return click('.search button'); 
    }) 
    .then(function(){ 
     // I want to go back here 
     return visit('/'); 
    }) 
    .then(function(){ 
     var keyword = find('.search input').val(); 
     equal(keyword, ''); 
     ok(!exists('.search .results')); 
    }); 
}) 

Qual è il modo giusto per simulare pulsante indietro nei test?

risposta

8

window.history.back() o window.history.go(-1)

+2

Questo non funziona se utilizzato con i test poiché forza l'intera finestra indietro 1, non la rotta. Prenderà in pratica una pagina diversa. –

+5

Questo perché test di default usano la NoneLocation che non tiene traccia della cronologia. Dovrai cambiare la tua posizione in HashLocation se vuoi testare la funzionalità di back, o fare ciò che stai facendo al momento. – alexspeller

+0

Hai qualche riferimento per come è impostato HashLocation? –

1

ho scritto di prova aiutanti per simulare i pulsanti di navigazione del browser e inoltrarli e pubblicarli come add-on -ber-cli: ember-cli-browser-navigation-button-test-helper

Espongono 3 helper di test: backButton, forwardButton, setupBrowserNavigationButtons. L'ultimo proprietario registra un servizio, che registra le modifiche alla posizione e utilizza le transizioni per andare avanti o indietro.

Funziona anche con l'impostazione predefinita location: 'none'.