Verspotten von Serviceaufrufen, die Observables in Angular 2 zurückgeben?

9

Ich habe versucht, einige Serviceaufrufe zu verspotten, die Observable in meiner Angular-App zurückgeben, aber ich kann einfach keine gültige Observable erstellen, die Aufrufe wie catch() oder map() in meinem Code auslöst. Zum Beispiel:

Mein Service:

%Vor%

Meine Angabe:

%Vor%

Die Coverage-Analyse sagt mir, dass die Methode handleError noch nie ausgeführt wurde. Im Fall einer erfolgreichen Observablen wird auch nicht die Methode extractData durchlaufen.

Wohin soll das Observable gehen? Wie kann ich eine geeignete Observable zurückgeben, um solche Anrufe zu testen?

    
vinnylinux 29.03.2017, 14:45
quelle

4 Antworten

1

Irgendwo in Ihrem Testcode glaube ich, dass Sie diesen Code haben müssen:

%Vor%     
birwin 29.03.2017, 15:06
quelle
0

Es gibt zwei Möglichkeiten, dies zu erreichen.

Zuerst würde in Ihrer Service-Methode Folgendes verwendet:

%Vor%

Die zweite Methode wäre, rufen Sie den Dienst wie folgt auf:

%Vor%

Wenn Sie die Service-Methode aufrufen, verwenden Sie Folgendes:

%Vor%

Die Methode, die Sie zum Extrahieren von Daten verwenden, this.extractData() , kann anstelle von res.json() im Service aufgerufen werden, aber insgesamt ist es das gleiche Ergebnis.

Hoffe das hilft:)

    
Wesley Coetzee 06.04.2017 10:54
quelle
0

Sie müssen zuerst mockData erstellen, damit der Service sie nutzen kann. Es gibt 2 Dateien darunter. Fügen Sie Ihren Komponenten- und Servicenamen anstelle von COMPONENT_NAME & amp; SERVICE_NAME jeweils.

Spezifikationsdatei ts

%Vor%

Sie müssen das Verzeichnis testHelper (oder einen beliebigen Namen) im Stammverzeichnis

erstellen

serviceMockData ts

%Vor%     
Pramod Patil 07.04.2017 06:57
quelle
0

Was passiert, wenn Sie den Error-Handler abonnieren? Z.B. in deiner Spezifikation:

%Vor%

(Obwohl ich nicht denke, dass dies der Fall sein sollte).

So verspotte ich die fehlgeschlagenen Backend-Aufrufe:

%Vor%     
Zlatko 16.06.2017 10:05
quelle

Tags und Links