无法在Angular单元测试中增加代码覆盖率

时间:2019-09-27 07:29:01

标签: angular unit-testing karma-jasmine karma-coverage

我正在尝试学习如何使用Karma和Jasmine对Angular进行单元测试。

我的问题是我使用spyOn()和Expect.toHaveBeenCalled()做到了,即使Karma说通过了测试,代码覆盖率也没有更新。

我是角单元测试的新手,我不知道如何正确测试方法以获取代码覆盖率。

感谢大家的帮助。

2 个答案:

答案 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