我有一项服务
@Injectable()
export class MyService {
private _id: string;
get id(): string {
return this._id;
}
}
以及一个组件的测试,我想在其中模拟这个服务:
let myServiceMock = mock<MyService>(MyService);
when(myServiceMock.id).thenReturn('mockId');
TestBed.configureTestingModule({
imports: [
MyModule
],
providers: [
{
provide: MyService, useValue: instance(myServiceMock)
}
]
});
当测试运行时,我将undefined作为一个id。
可以通过mockito来模拟getter吗?
发布于 2017-09-08 13:59:09
看起来这就是TestBed.configureTestingModule的工作方式。它重新定义了作为useValue提供的所有依赖项。
解决方案是使用useFactory
let myServiceMock = mock<myServiceMock>(MyService);
when(myServiceMock.id).thenReturn('mockId');
TestBed.configureTestingModule({
imports: [
MyModule
],
providers: [
{
provide: MyService, useFactory: () => instance(myServiceMock)
}
]
});
https://stackoverflow.com/questions/46118254
复制相似问题