首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我找不到为什么res.json()在单元测试覆盖率中没有命中

我找不到为什么res.json()在单元测试覆盖率中没有命中
EN

Stack Overflow用户
提问于 2017-05-04 01:12:57
回答 1查看 266关注 0票数 1

所以我有一个单元测试覆盖率被karma- Coverage -instanbul report跟踪,当我查看覆盖率报告时:

代码语言:javascript
复制
.map(res => res.json())

我所有的提供者中的一部分在测试中从未命中。但我确实对这些提供商进行了测试,并且正在验证我是否得到了响应。

下面是我正在测试的函数的一个示例:

代码语言:javascript
复制
public getCampaigns(): Observable<CampaignsResponse> {
  return this.http.get(this.campaignsUrl).map(res => res.json());
}

下面是对此函数的测试:

代码语言:javascript
复制
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?

EN

回答 1

Stack Overflow用户

发布于 2017-05-05 16:44:26

您的connection具有类型MockConnection而不是any,并且MockConnection没有mockBackend属性。相反,它有一个mockRespondhttps://angular.io/docs/ts/latest/api/http/testing/index/MockConnection-class.html

尝试像这样修改测试:

代码语言:javascript
复制
// arrange
mockBackend.connections.subscribe((connection: MockConnection) => {
  connection.mockRespond(new Response(new ResponseOptions({
    body: JSON.stringify(mockCampaigns),
  })));
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43766257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档