Ich habe eine Beispielroute wie folgt:
%Vor%Es ist nur eine Test-URL, über die ich JSON-Beispieldaten online abrufen kann
https://jsonplaceholder.typicode.com/posts/1
Ich wollte den Zustand testen.
%Vor%Aber das scheitert. Sagen
%Vor%Was mache ich falsch?
AKTUALISIEREN
console.log(angular.mock.dump($scope));
gibt das folgende
Bitte helfen Sie.
Ursprünglicher Fehler:
%Vor%Was mache ich falsch?
Sie rufen resolveFn()
in Ihrem Komponententest an. Die Funktion wurde so definiert, dass der Dienst $http
erforderlich ist und dieser Aufruf den Dienst $http
nicht übergibt (als fingerpich ) erwähnt).
Um dies zu korrigieren, erlauben Sie angular, die Abhängigkeitsinjektion zu verarbeiten, indem Sie $injector.invoke(resolveFn)
verwenden.
Sehen Sie dies in Aktion mit einem Plunk . Beachten Sie, dass der Test aus einem anderen Grund fehlschlägt. Aber, (wenn ich die Regeln richtig verstehe), sollte ein anderes Thema mit einer anderen Frage beantwortet werden (wenn Sie mehr Hilfe benötigen).
Eine Randnotiz: Wenn die Site (nicht der Unit Test) in einem Browser geöffnet wird, würde ich erwarten, dass es funktioniert, weil angular die $http
Abhängigkeit in die Funktion resolveData
einfügt.
Sehen Sie sich die Antwort an, die auch auf das von fingerpich .
Hier ist ein Blog, den ich hilfreich fand, als ich etwas über Unit Tests von AngularJS erfuhr.
Um dieses Problem zu lösen, sollten Sie $http
an die resolveData-Funktion übergeben.
aber es ist besser, Tests wie dies
Tags und Links javascript angularjs unit-testing karma-jasmine