Ich erstelle ein SPA mit AngularJs und dem UI-Router von Angular-UI. Jetzt versuche ich die Authentifizierungslogik zu erstellen.AngulaJs UI-Router. Winkelmesserprüfung fehlgeschlagen
Bei einer Statusänderung wird überprüft, ob der Status eine Authentifizierung erfordert und ggf. in den Anmeldestatus übertragen wird. Auch wenn ein Benutzer angemeldet ist, wird verhindert, dass der Login-Status erreicht wird. Die Authentifizierung erfolgt über ein Token, das in einem Cookie gespeichert ist.
Das ist mein Winkelmesser Testszenario:
describe('Routes', function() {
it('Should go to the selected path if user logged in', function() {
browser.get('/');
expect(browser.getLocationAbsUrl()).toMatch("/login");
browser.manage().addCookie("authToken", "aaa");
browser.manage().getCookie("authToken").then(function(cookie) {
expect(cookie.name).toBe('authToken');
expect(cookie.value).toBe('aaa');
});
browser.get('/');
expect(browser.getLocationAbsUrl()).toMatch("/main");
browser.get('/#/main');
expect(browser.getLocationAbsUrl()).toMatch("/main");
/* This part fails, because, when the user is logged in,
he should be transfered to main state, if he is trying to reach the
login page. In this failing case, the user is able to reach the
/login even if he is logged in. */
browser.get('/#/login');
expect(browser.getLocationAbsUrl()).toMatch("/main");
browser.manage().deleteCookie("authToken");
browser.get('/#/login');
expect(browser.getLocationAbsUrl()).toMatch("/login");
browser.get('/#/main');
expect(browser.getLocationAbsUrl()).toMatch("/login");
});
});
Wenn ich versuche, den Test Verhalten selbst zu simulieren, ist alles in Ordnung, aber wenn ich laufe Winkelmesser:
Message:
Expected 'http://localhost/#/login' to match '/main'.
Stacktrace: Fehler: Fehler Erwartung
kein Glück, Test nicht noch – nn4n4s
Haben Sie die richtige Seite geladen wird, wenn die Tests ausgeführt werden? Wenn ja, versuche es mit 'ptor.sleep (1000);', das benutze ich, wenn ich verzweifelt bin. Wenn Sie einen besseren Weg finden, lassen Sie es mich wissen ... Wenn Sie nicht sehen, die richtige Seite geladen wird, dann haben Sie vielleicht ein Problem mit dem Löschen von Cookies? – Cal