2015-06-15 12 views
5

Próbuję napisać prosty test e2e dla uwierzytelniania, którego używamy w naszym projekcie. Uwierzytelnienie jest oparte na tokenach json, które są ustawione w window.localStorage.satellizer_token.Testowanie kątomierza, dostęp i modyfikacja Właściwości obiektu okna

Aby to ustawić, używam poniższego kodu, ale to, co widzę, nie ustawia prawdziwej właściwości localStorage obiektu 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'); 
    }); 
}); 

});

Wiem, że istnieje już coś podobnego: here i here, ale wszystkie przykłady, które mogę znaleźć, dotyczą tylko dostępu. Potrzebuję również zmodyfikować właściwości okna.

Jaki jest poprawny sposób interakcji z obiektem okna w testach kątomierza?

Odpowiedz

4

Roztwór roboczy:

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

Na to wygląda metoda okno ma tylko zestaw predefiniowanych metod interakcji z obiektem okna, ale to nie robi” t pozwól mi ustawić nowe właściwości. – pietrovismara

+1

Dokładny. Ponieważ to, co zwraca, to interfejs, zdefiniowany w następujący sposób: http://angular.github.io/protractor/#/api?view=webdriver.WebDriver.Window. Jeśli chcesz zarządzać obiektem okna w niestandardowy sposób, powiedziałbym, że jest w porządku, jak to robisz teraz. Polecam tylko zadeklarować anonimową funkcję oddzwaniania poza skryptem wykonywania, aby móc go ponownie użyć lepiej, na przykład: 'var localStorageSetter = function() { window.localStorage.satellizer_token = 'cokolwiek'; } browser.executeScript (localStorageSetter); ' –

Powiązane problemy