【发布时间】:2019-05-01 18:34:06
【问题描述】:
我正在测试一个 Angular 组件并且我的组件依赖于一个服务,所以我的组件的构造函数在逻辑上注入了服务。在ngOnInit,服务在多个地方被调用。
我遇到的问题是我需要测试部分组件并且只想模拟一小部分服务。在模拟之后,我意识到ngOnInit 中的许多代码依赖于服务,所以这导致我在 MockService 中复制大量代码,以便我可以使ngOnInit 工作并且我可以正确地实例化组件。但同时它也有很多复制。
我不想模拟该服务中的所有内容,只模拟 it() 函数中我需要的部分。我该如何解决这个问题?
有没有办法我仍然可以创建我的组件进行测试,注入一个模拟服务但在 it() 上覆盖我需要的任何东西?
我不想通过扩展 OriginalService 来创建 MockService,因为我想完全隔离组件。
谢谢。
【问题讨论】:
-
您可以使用间谍,让注入为您完成其余工作,而不是模拟所有内容。看看codecraft.tv/courses/angular/unit-testing/mocks-and-spies/…
标签: angular service jasmine components karma-runner