ですから、私はユニットテストカバレッジをカルマ - カバレッジ - スタンパン - レポーターによって追跡しています。 、:ユニットテストカバレッジでres.json()がヒットしなかった理由、角度が
.map(res => res.json())
私のすべてのプロバイダーの一部は、決してテストにヒットしません。しかし、私はそれらのプロバイダのためのテストを持って、私が応答を得ていることを確認しています。ここ
私がテストだ機能の一例である:ここ
public getCampaigns(): Observable<CampaignsResponse> {
return this.http.get(this.campaignsUrl).map(res => res.json());
}
は、この機能のためのテストである:
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);
});
}));
})。
私のテストカバレッジによると、res.json()はmap関数内で決してヒットしません。
なぜそうなのか考えている人はいますか?カバレッジレポートが間違っているか、コードを誤ってTypeScriptにマッピングしている可能性はありますか?
まあ、私はmockBackend' 'としてそれを去るとき、それは正しくテストを実行しないので、私は' connection'変数は 'mockBackend'を持っているということだと思いますプロパティ。しかし、私が 'mockRespond'を試してみると、' res.json() 'がヒットしないというコードカバレッジ分析と同じコードが表示されています。 – NuttGuy