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%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.
Tags und Links jasmine angular angular-http angular-services angular-test