简体   繁体   English

在angular2中使用ts-mockito来模拟getter

[英]Using ts-mockito in angular2 to mock getter

I have a service 我有服务

 @Injectable() export class MyService { private _id: string; get id(): string { return this._id; } } 

And a test for a component, where I want to mock this service: 还有一个组件测试,我想模拟这个服务:

 let myServiceMock = mock<MyService>(MyService); when(myServiceMock.id).thenReturn('mockId'); TestBed.configureTestingModule({ imports: [ MyModule ], providers: [ { provide: MyService, useValue: instance(myServiceMock) } ] }); 

And when test is running, i get undefined as an id . 当测试运行时,我将undefinedid

Is it possible to mock getters via mockito? 是否可以通过mockito模拟吸气剂?

Looks like it is how TestBed.configureTestingModule works. 看起来它是TestBed.configureTestingModule工作原理。 It redefines all dependencies which are provided as useValue 它重新定义了作为useValue提供的所有依赖useValue

The solution is using useFactory : 解决方案是使用useFactory

 let myServiceMock = mock<myServiceMock>(MyService); when(myServiceMock.id).thenReturn('mockId'); TestBed.configureTestingModule({ imports: [ MyModule ], providers: [ { provide: MyService, useFactory: () => instance(myServiceMock) } ] }); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM