Angular JS Testing mit Karma Jasmine

9

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.

    
StrugglingCoder 25.01.2017, 04:48
quelle

2 Antworten

2

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.

    
Matt Merrill 30.01.2017 17:32
quelle
1
%Vor%

Um dieses Problem zu lösen, sollten Sie $http an die resolveData-Funktion übergeben.

%Vor%

aber es ist besser, Tests wie dies

    
fingerpich 28.01.2017 09:21
quelle