我正在尝试学习如何使用Karma和Jasmine对Angular进行单元测试。
我的问题是我使用spyOn()和Expect.toHaveBeenCalled()做到了,即使Karma说通过了测试,代码覆盖率也没有更新。
我是角单元测试的新手,我不知道如何正确测试方法以获取代码覆盖率。
感谢大家的帮助。
答案 0 :(得分:1)
spyOn(EnvironmentService, 'isProduction');
会覆盖服务方法,然后EnvironmentService.isProduction();
会调用间谍而不是您的方法。因此,不会调用您的方法。有效的测试将删除间谍,并且看起来像expect(EnvironmentService.isProduction()).toBe(false)
答案 1 :(得分:1)
实际上,您不仅需要创建间谍,还需要执行间谍来扩大覆盖范围。间谍用存根替换了间谍功能。如果要正常调用此间谍功能,则需要在间谍中添加 .and.callThrough()。
spyOn(EnvironmentService, 'isProduction').and.callThrough()
您还可以在此处阅读更多信息:about spy and callThrough