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?
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
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); ' –