使用另一个提供程序的实例在TestBed中实例化提供程序

时间:2017-04-13 15:09:13

标签: unit-testing angular testing

如何使用其他提供程序的实例在TestBed.configureTestingModule()中实例化提供程序?

一个例子(显然没有工作):

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

1 个答案:

答案 0 :(得分:2)

使用factory provider

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