Ich habe eine Funktion in meinem Angular-Controller, der wie folgt aussieht:Angular JS - Testen eine Funktion mit einer Seite Redirect Mit Karma/Jasmin
$scope.myFunction = function(){
$scope.myVariable = "something";
$scope.myOtherVariable = "something else";
window.location.href = "/path/to/page";
}
Ein einfacher Jasmin Test deckt die obige Funktion und wie folgt aussieht:
describe('my test', function(){
it('should pass', function(){
scope.myFunction();
expect(scope.myVariable).toBe('something');
expect(scope.myOtherVariable).toBe('something else');
});
});
der obige Test selbst geht, aber dann wirft Karma den folgenden Fehler in der Konsole:
Einige Ihre Tests haben eine volle Seite neu geladen!
Die Seitenumleitung bewirkt, dass Karma diese Warnung auslöst. Was ist der beste Weg, um dies zu umgehen?
Ich dachte darüber nach, sowohl anonyme Funktionen im Jasmin-Test und Angular-Namen und dann arguments.callee.caller.name innerhalb der ursprünglichen Funktion zu geben, um festzustellen, ob die Funktion von sich selbst oder Jasmin aufgerufen wird. Leider gibt arguments.callee.caller.name immer undefined zurück, was vermutlich durch die Art verursacht wird, wie Angular und Jasmine miteinander verknüpft sind.
Dieses Problem tauchte nicht wirklich in meinem Code auf, aber es gab mir den Funken, der eine Reparatur für mein eigenes entzündete, also danke für das Posten! Falls Sie neugierig sind, das Problem, das ich aufgrund Ihrer Frage für mich selbst behoben habe, ist http://stackoverflow.com/questions/31947852/how-to-test-angular-app-with-john-papa-style-karma- und-Jasmin-mit-Daten-servi. Danke, C§ – CSS