2015-01-23 22 views
5

Ho appena iniziato con angularjs e ho bisogno di aiuto. Sto usando ngStorage per gestire l'archiviazione locale e il rapportatore alle specifiche e2e in un'app AngularJS.Test goniometro con ngStorage

describe('Test', function() { 
    beforeEach(function() { 
    browser.driver.manage().window().setSize(1280, 1024) 
    browser.get('http://localhost:9000/#/test/first-test') 
    }) 

    it("keeps the alternative marked", function() { 
     element(by.id('element')).click() 

     browser.refresh() 

     expect(element(by.id('element')).isSelected()).toBe(true) 
    }) 
}) 

Risultato:

1) Test keeps the alternative marked 
    Message: 
    Expected false to be true. 
    Stacktrace: 
    Error: Failed expectation 
    at [object Object].<anonymous> (path/spec/test_spec.js:12:52) 

penso che browser.refresh() cancella la memoria locale. C'è un modo per mantenerlo o un altro modo per testare la stessa cosa?

Grazie per l'avanzato.

risposta

0

Ho avuto lo stesso problema ma non penso che sia correlato al comportamento browser.refresh(). Sembra che ci siano problemi di temporizzazione con lo ngStorage che aggiorna effettivamente le cose in localStorage.

È possibile vedere in https://github.com/gsklee/ngStorage/blob/master/ngStorage.js#L205 che ngStorage attende 100 ms dopo una modifica su $ rootScope per salvare effettivamente su localStorage.

Quello che sto vedendo è abbastanza coerente con questo: A volte l'oggetto rimosso rimane nascosto dopo la ricarica, a volte no. Se inserisco uno browser.waitForAngular() esplicito prima della chiamata di aggiornamento, il test passa più spesso ma non ogni volta. La cosa più affidabile che ho trovato finora è aggiungere un esplicito browser.sleep(125); dopo ogni azione che cambia localStorage tramite ngStorage. Per inciso, questo sembra essere il metodo utilizzato da ngStorage nei propri test.

Vale la pena notare che il gestore onbeforeunload in ngStorage dovrebbe occuparsi di questo caso particolare, ma sembra che non stia facendo la cosa giusta quando viene chiamato browser.refresh().

+0

Ho aggiunto un problema su github per ottenere informazioni più dettagliate su questo: https://github.com/gsklee/ngStorage/issues/226 – cayleyh

Problemi correlati