【问题标题】:Instantiate a provider in TestBed with the instance of another provider使用另一个提供者的实例在 TestBed 中实例化一个提供者
【发布时间】:2017-04-13 15:09:13
【问题描述】:

如何用另一个提供者的实例实例化TestBed.configureTestingModule() 中的提供者?

一个例子(显然不起作用):

beforeEach(() => {
  TestBed.configureTestingModule({
    providers: [
      { provide: ServiceOne, useValue: new ServiceOne('parameterOne')},
      { provide: ServiceTwo, useValue: new ServiceTwo(TestBed.get(ServiceOne), 'parameterTwo')}
    ]
  });
});

【问题讨论】:

    标签: unit-testing angular testing


    【解决方案1】:

    使用factory provider

    providers: [
      { provide: ServiceOne, useValue: new ServiceOne('parameterOne')},
      { 
        provide: ServiceTwo, 
        deps: [ ServiceOne ],
        useFactory: (serviceOne: ServiceOne) => {
          return new ServiceTwo(serviceOne, 'parameterTwo')
        }
      }
    ]
    

    【讨论】:

    • 谢谢!这正是我想要的。
    猜你喜欢
    • 2021-07-30
    • 2019-08-06
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 2020-03-22
    • 1970-01-01
    • 2020-01-06
    相关资源
    最近更新 更多