Hit So habe ich eine Unit Test Coverage von der Karma-Berichterstattung-instanz-Reporter verfolgt, wenn ich den Coverage-Bericht obwohl , die:Kann nicht herausfinden, warum res.json() nicht in Einheit Test Coverage, Angular
.map(res => res.json())
Anteil von allen meinen Providern wird nie im Test getroffen. Aber ich habe Tests für diese Anbieter und überprüfe, dass ich eine Antwort bekomme. Hier
ist ein Beispiel für die Funktionen Ich teste:
public getCampaigns(): Observable<CampaignsResponse> {
return this.http.get(this.campaignsUrl).map(res => res.json());
}
Hier ist der Test für diese Funktion:
describe("getCampaigns",() => {
it("should return an Observable<CampaignsResponse>",
inject([CampaignsService, MockBackend], (service: CampaignsService, mockBackend: MockBackend) => {
// arrange
mockBackend.connections.subscribe((connection: any) => {
connection.mockBackend(new Response(new ResponseOptions({
body: JSON.stringify(mockCampaigns),
})));
});
// act
service.getCampaigns().subscribe((campaigns) => {
// assert
expect(campaigns.campaigns.length).toEqual(1);
expect(campaigns.campaigns[0].id).toEqual(mockCampaigns.campaigns[0].id);
expect(campaigns.campaigns[0].channelID).toEqual(mockCampaigns.campaigns[0].channelID);
expect(campaigns.campaigns[0].name).toEqual(mockCampaigns.campaigns[0].name);
expect(campaigns.campaigns[0].active).toEqual(mockCampaigns.campaigns[0].active);
expect(campaigns.campaigns[0].createdAt).toEqual(mockCampaigns.campaigns[0].createdAt);
expect(campaigns.campaigns[0].updatedAt).toEqual(mockCampaigns.campaigns[0].updatedAt);
});
}));
});
Aber entsprechend meiner Testabdeckung res.json() wird nie innerhalb der Kartenfunktion getroffen.
Hat jemand irgendwelche Ideen, warum das sein könnte? Ist es möglich, dass der Coverage-Bericht einfach falsch ist oder den Code falsch an TypeScript abbildet?
Nun, wenn ich es lassen, wie 'mockBackend' sie den Test korrekt ausführt, so dass ich glaube, dass die' connection' Variable einen 'mockBackend' hat Eigentum. Aber wenn ich mit dem 'mockRespond' versuche, sehe ich immer noch die gleichen Code Coverage-Analysen, die' res.json() 'nicht getroffen werden. – NuttGuy