我似乎无法在 Angular 2 测试台中注册多个提供者(服务)。我想要的只是为测试平台提供不止一项服务。这是我当前的测试套件的示例。
export function main() {
describe('Create Applications Component test suite:', () => {
let fixtureComponent:any, nativeComponentElement:any;
beforeEach(() => {
return TestBed.configureTestingModule({
imports: [
ReactiveFormsModule,
FormsModule
],
declarations: [CreateApplicationComponent]
}).overrideComponent(CreateApplicationComponent, {
set: {
providers: [
{
provide: injector,
useClass: MockCreateApplicationService
}
]
}
})
.compileComponents().then(() => {
fixtureComponent = TestBed.createComponent(CreateApplicationComponent);
nativeComponentElement = fixtureComponent.nativeElement;
return fixtureComponent;
});
});
it('component should work without errors', () => {
expect(true).toBe(true);
});
});
}
我需要达到的目标是这样的:
.overrideComponent(CreateApplicationComponent, {
set: {
providers: [
{
provide: injector,
useClass: MockCreateApplicationService
},
{
provide: providerB,
useClass: SecondProvider
}
]
}
})
最佳答案
事实证明这是添加多个提供程序的正确方法。我只是对收到的缺少 formBuilder 提供程序的错误感到困惑,所以我添加了该错误,现在一切都按预期工作。
解决方案:
.overrideComponent(CreateApplicationComponent, {
set: {
providers: [
{ provide: CreateApplicationService, useClass: MockCreateApplicationService },
{ provide: UserService, useClass: MockUserService },
{ provide: FormBuilder, useClass: FormBuilder }
]
}
})
关于javascript - 多个提供商 Angular 2 测试床,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42612721/