Ich habe eine Listing-Komponente mit folgendem Code:
%Vor% Ich möchte Komponententests für den ngOninit
-Hook schreiben. Ich habe folgenden Test geschrieben:
Die Ausgabe von console.log
im Test ist jedoch ein leeres ul
-Tag wie folgt:
Kann mir jemand den richtigen Weg vorschlagen, Komponententests für Komponentenhaken zu schreiben?
LÖSUNG
Mock die HTTP-Anfrage im Block injectAsync
wie folgt:
Aber jetzt bekomme ich einen weiteren Fehler wie folgt:
%Vor% Wenn Sie asynchronen Code in ngOnInit()
aufrufen, können Sie nicht davon ausgehen, dass er abgeschlossen ist, wenn console.log(...)
ausgeführt wird. this.employees
wird nur gesetzt, wenn der Rückruf, den Sie an subscribe(...)
übergeben haben, nach dem Eintreffen der Antwort aufgerufen wird.
Wenn Sie MockBackend verwenden, können Sie die Antwort steuern und nachdem die Antwort übergeben wurde, müssen Sie% co_de ausführen Um die Komponente erneut mit den aktualisierten Daten rendern zu lassen, können Sie fixture.detectChanges()
lesen und erwarten, dass sie den gerenderten Inhalt enthält.
Tags und Links unit-testing angular angular2-directives