无法增加 Angular 单元测试中的代码覆盖率
Not able to increase code coverage in Angular Unit testing
我正在尝试学习如何使用 Karma 和 Jasmine 为 Angular 进行单元测试。
我的问题是我用 spyOn() 和 expect.toHaveBeenCalled() 实现了它,即使 Karma 说它通过了测试,代码覆盖率也没有更新。
我是 angular 单元测试的新手,我不知道如何正确地测试方法以获得代码覆盖率。
感谢大家的帮助。
spyOn(EnvironmentService, 'isProduction');
覆盖服务方法,然后 EnvironmentService.isProduction();
调用间谍而不是您的方法。因此不会调用您的方法。有效的测试将删除间谍并以某种方式看起来像 expect(EnvironmentService.isProduction()).toBe(false)
实际上,您不仅需要创建间谍,还需要执行间谍以增加覆盖范围。间谍用存根替换间谍函数。如果你想让这个spy函数被正常调用,你需要在你的spy..and.callThrough()中添加.and.callThrough()
spyOn(EnvironmentService, 'isProduction').and.callThrough()
您还可以在这里阅读更多内容:about spy and callThrough
我正在尝试学习如何使用 Karma 和 Jasmine 为 Angular 进行单元测试。
我的问题是我用 spyOn() 和 expect.toHaveBeenCalled() 实现了它,即使 Karma 说它通过了测试,代码覆盖率也没有更新。
我是 angular 单元测试的新手,我不知道如何正确地测试方法以获得代码覆盖率。
感谢大家的帮助。
spyOn(EnvironmentService, 'isProduction');
覆盖服务方法,然后 EnvironmentService.isProduction();
调用间谍而不是您的方法。因此不会调用您的方法。有效的测试将删除间谍并以某种方式看起来像 expect(EnvironmentService.isProduction()).toBe(false)
实际上,您不仅需要创建间谍,还需要执行间谍以增加覆盖范围。间谍用存根替换间谍函数。如果你想让这个spy函数被正常调用,你需要在你的spy..and.callThrough()中添加.and.callThrough()
spyOn(EnvironmentService, 'isProduction').and.callThrough()
您还可以在这里阅读更多内容:about spy and callThrough