【发布时间】:2020-01-09 01:43:39
【问题描述】:
给定这个在本地创建服务的组件
@Component({
<removed for clarity>
providers: [
{ provide: 'IMyService', useClass: MyService },
]
})
export class MyComponent implements OnInit, OnDestroy, AfterViewInit
{
constructor(private data: IMyService){}
}
我一直在尝试在单元测试中提供服务,像这样
beforeEach(async(() =>
{
TestBed.configureTestingModule({
declarations: [MyComponent],
providers: [
{ provide: 'IMyService', useClass: MockMyService },
]
})
/*
.overrideProvider('IMyService', { useValue: MockMyService })
.overrideComponent(MyComponent, {
set: {
providers: [
{ provide: 'IMyService', useClass: MockMyService }
]
}
})
*/
.compileComponents();
注释掉的部分是我尝试过的东西。
但我经常收到此消息
Failed: Can't resolve all parameters for MyComponent: (?)
我在这里错过了什么?
【问题讨论】:
-
快速提问,但是 MyService 是否使用 @Injectable 正确注释?
-
您能否检查
IMyService的导入。您是否从正确的路径导入? -
(1) MockMyService 用@Injectable 注释,这就是我想要使用的服务 (2) 我确实尝试导入 IMyService,但因为它在单元测试中被称为字符串,所以它没有出现在进口中使用(即,它是不同的颜色)NB。实际组件有效,但单元测试无效