我了解如何模拟对服务的函数调用。
尽管我遇到的情况是我的MainService只是其他几个服务的包装。
export class MainService {
constructor(
public service1: Service1,
public service2: Service2,
public service3: Service3
){}
我的组件注入MainService,并例如调用this.mainService.service2.getUsers()。
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [MyComponent],
providers: [
FormBuilder,
{
provide: MainService,
useValue: jasmine.createSpyObj('MainService', [
'getUsers'
])
}
],
schemas: [NO_ERRORS_SCHEMA]
})
fixture = TestBed.createComponent(MyComponent)
})
我创建了模仿MainService的spyObject并添加了getUsers函数,但我认为这样做不起作用,因为getUsers函数并不直接位于MainService上。我该怎么做。
答案 0 :(得分:0)
尝试:
const mockMainService = {
service1: {
// mock service 1 public methods and properties here,
},
service2: {
getUsers: () => {....},
// mock service 2 public methods and properties here,
},
service3: {
// mock service 3 public methods and properties here.
}
};
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [MyComponent],
providers: [
FormBuilder,
{
provide: MainService,
useValue: mockMainService,
}
],
schemas: [NO_ERRORS_SCHEMA]
})
fixture = TestBed.createComponent(MyComponent)
})