【问题标题】:Angular testing: Is it possible to stub service provided by imported module角度测试:是否可以存根导入模块提供的服务
【发布时间】:2019-04-23 02:35:56
【问题描述】:

我正在测试 Angular 组件,它使用另一个模块的成员(它是装饰器)。这就是为什么我需要在创建 DynamicTestModule 时导入另一个模块。导入的模块提供服务,我想存根。是否可以使用 Angular 测试实用程序?或者也许我可以存根整个导入的模块并确保它的存根成员?你能给我举个这样的例子吗?

这是我的测试模块定义:

TestBed.configureTestingModule({
  imports: [TranslationModule],
  declarations: [SomeComponent],
  providers: [
    { provide: Router, useValue: routerSpy },
    { provide: ActivatedRoute, useValue: ActivatedRouteStub },
    { provide: SomeService, useValue: {} },
    { provide: ToastrService, useValue: {} }
  ],
  schemas: [NO_ERRORS_SCHEMA]
});

【问题讨论】:

    标签: angular unit-testing angular-test


    【解决方案1】:

    如果您指的是“Someservice”,请在代码顶部添加以下内容:

    class SomeserviceStub { // stubbed code }

    并更改您的提供程序数组:

    { provide: Someservice, useClass: SomeserviceStub }

    【讨论】:

    • 好的,谢谢,但是伙计,我正在尝试覆盖模块,而不是存根服务。
    • 是翻译模块,服务注入到服务或组件之一?
    • 是的。 TranslationsModule 提供了我想摆脱的服务。
    • 你只需要删除模块的导入并用一个存根替换它,就像给定的例子一样,假设它只是你想要存根的一个依赖项
    猜你喜欢
    • 2017-08-30
    • 1970-01-01
    • 2020-10-14
    • 2017-09-30
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    • 2014-01-15
    • 2017-07-01
    相关资源
    最近更新 更多