Test des HTTP-Dienstes, der mehrere Aufrufe durchführt und Observable zurückgibt, ohne die Antworten zuzuordnen

8

Ich habe einen Datendienst, der die Daten vom Server holt und mehrere Anfragen macht, die dann eine Reihe von Observablen zurückgeben. Ich möchte die Daten testen.

Was ich versucht habe, ist, dass ich im Array ein Array mit zwei Observablen gesendet habe. Ich weiß nicht, ob das der richtige Weg ist, um Daten zu testen.

Aber Tests versagen besonders die letzten drei Tests im asynchronen Testblock

Wichtig: Ich möchte testen, dass, wenn charId auf falsy und comicsId auf falsy gesetzt wird, die Methode aufgerufen wird und die Observable abonniert wird, die zurückgegeben wird, nachdem Sie http verspottet haben, erhalten Sie eine zurück Array mit den zwei erwarteten Antworten. Gleiches gilt für die 4 erwartete Antwort, wenn charId truthy ist. Das gleiche gilt für die 6 erwarteten Antworten, wenn comicsId truthy ist

// der Dienst, der die Daten abruft

%Vor%

// mein Test

%Vor%     
SONGSTER 01.11.2017, 08:44
quelle

1 Antwort

1

Zunächst, wie @Aviad P. gezeigt hat, gibt die Methode forkJoin kein Observable-Array von Observablen zurück. Sie gibt ein Array des Ergebnisses jedes Observable im forkJoin zurück Das Ergebnis dieser Observablen sind keine observablen Instanzen.

Außerdem verspotten Sie nicht die getChart () -Methode, mit dem Mock-Backend verspottet man jeden http-Aufruf , aber nicht die Methode getChar () selbst. Das Array muss Länge === 2 sein, da nicht this.chartId und this.comicsId vorhanden sind ...

Also würde ich sagen, dass die zurückgegebene Struktur ungefähr so ​​ist, also ist Antwort [0] ein Array:

%Vor%

Gesagt, dass diese Erwartung niemals wahr sein wird, weil kein Array einem neu erstellten Array gleich wäre:

%Vor%

Ändern Sie alles, was Ihre Probleme lösen sollte. Wenn Ihre Observablen zurückgegeben werden und Ihre Observable-Instanz, Ihr Code: 'body: [Observable, Observable]' keine Observables-Instanzen zurückgibt, gibt sie die Observable-Definitionsfunktion zurück, dies wäre ein nicht korrekter Mock, obwohl der Test bestehen würde .

Dies wäre ein Testbeispiel für einen Fehler:

%Vor%

Gesagt, dass der einzige erwarten, dass Ihr Anwendungsfall diese ist:

%Vor%

Die anderen sind unnötig ... also testen Sie nicht die Daten, die Sie verspotten. Sie möchten die Anzahl der Aufrufe testen, die aufgrund des Wertes der Variablen durchgeführt wurde. chartId und this.comicsIs.

Hoffe, das hilft.

    
Llorenç Pujol Ferriol 07.11.2017 10:53
quelle