【问题标题】:Angular Testing using Karma-使用 Karma 进行角度测试
【发布时间】:2019-05-01 18:34:06
【问题描述】:

我正在测试一个 Angular 组件并且我的组件依赖于一个服务,所以我的组件的构造函数在逻辑上注入了服务。在ngOnInit,服务在多个地方被调用。

我遇到的问题是我需要测试部分组件并且只想模拟一小部分服务。在模拟之后,我意识到ngOnInit 中的许多代码依赖于服务,所以这导致我在 MockService 中复制大量代码,以便我可以使ngOnInit 工作并且我可以正确地实例化组件。但同时它也有很多复制。

我不想模拟该服务中的所有内容,只模拟 it() 函数中我需要的部分。我该如何解决这个问题?

有没有办法我仍然可以创建我的组件进行测试,注入一个模拟服务但在 it() 上覆盖我需要的任何东西?

我不想通过扩展 OriginalService 来创建 MockService,因为我想完全隔离组件。

谢谢。

【问题讨论】:

标签: angular service jasmine components karma-runner


【解决方案1】:

如果我理解您的要求,那么是的,这是可行的。我整理了一个Stackblitz 来向您展示解决此问题的一种可能方法。在 stackblitz 中是一个依赖于 SomeService 的简单组件。

正如您在 my.component.spec.ts 文件中看到的那样,我正在使用间谍来仅覆盖 SomeService 中每个规范所需的部分('it' 函数)。

希望您可以将其用作模式并针对您的特定实现进行修改。

【讨论】:

    猜你喜欢
    • 2020-12-07
    • 1970-01-01
    • 2016-04-07
    • 2014-04-20
    • 2020-05-30
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    • 2016-12-25
    相关资源
    最近更新 更多