2015-06-15 10 views
5

Sto provando a scrivere un semplice test e2e per l'autenticazione che utilizziamo nel nostro progetto, l'autenticazione è basata su un token web json che è impostato in window.localStorage.satellizer_token.Test del goniometro, accesso e modifica Proprietà dell'oggetto finestra

Per impostarlo, utilizzo il codice riportato di seguito, ma per quello che vedo non imposta realmente la proprietà real localStorage dell'oggetto window.

describe('login', function() { 
it('should set the satellizer token and be allowed to get panel', function() { 
    browser.driver.get('http://example.com/'); 
    browser.driver.executeScript(function() { 
     return window.localStorage; 
    }).then(function (localStorage) { 
     expect(localStorage.satellizer_token).toBe(undefined); 
     localStorage.satellizer_token = "eyJ0fdaccKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6IjE3MjUzIiwiaWF0IjoxNDM0Mzc1NjU3LCJleHAiOjE0NjU5Mjk2NTd9.VbhdWQ_gOb7X8pmOGLDjBKURxcaWQlIXQGvLRansQCphk"; 
     expect(localStorage.satellizer_token).toBe("eyJ0fdaccKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6IjE3MjUzIiwiaWF0IjoxNDM0Mzc1NjU3LCJleHAiOjE0NjU5Mjk2NTd9.VbhdWQ_gOb7X8pmOGLDjBKURxcaWQlIXQGvLRansQCphk"); 
     browser.driver.get('http://example.com/panel'); 
     expect(browser.driver.getTitle()).toEqual('http://example.com/panel'); 
     expect(browser.driver.getCurrentUrl()).toEqual('http://example.com/panel'); 
    }); 
}); 

});

So che c'è già qualcosa di simile here e here ma tutti gli esempi che riesco a trovare riguardano solo l'accesso, ho bisogno anche di modificare le proprietà della finestra.

Qual è il modo corretto di interagire con l'oggetto finestra nei test del goniometro?

risposta

4

Soluzione di lavoro:

browser.executeScript(function() { 
     window.localStorage.satellizer_token = "eyJ0eXAiOiJKV1QiLCJhbGasdsOiJIUzI1NiJ9.eyJpZCI6IjE3MjUzIiwiaWF0IjoxNDM0Mzc1NjU3LCJleHAiOjE0NjU5Mjk2NTd9.VbhdWQ_gOb7X8pmOGLDjBKURQUQlcAfGSGvLRansQCphk"; 
    }); 
0
+0

Per quello che sembra il metodo finestra ha solo un insieme di metodi predefiniti per interagire con l'oggetto finestra, ma doesn' Mi permettono di impostare nuove proprietà. – pietrovismara

+1

Esatto. Perché ciò che restituisce è un'interfaccia, definita come segue: http://angular.github.io/protractor/#/api?view=webdriver.WebDriver.Window. Se si desidera gestire l'oggetto finestra in un modo personalizzato, direi che va bene come si sta facendo in questo momento. Ti consiglio solo di dichiarare la funzione anonima di callback al di fuori dello script di esecuzione, per poterla riutilizzare meglio, come: 'var localStorageSetter = function() { window.localStorage.satellizer_token = 'qualunque'; } browser.executeScript (localStorageSetter); ' –

Problemi correlati