角度测试,模拟只构建其他服务的服务



我理解如何模拟对服务的函数调用。

尽管我有一个案例,我的MainService只是其他几个服务的包装。

export class MainService {
constructor(
public service1: Service1,
public service2: Service2,
public service3: Service3
){}

我的组件注入MainService,并调用这个.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上。我该怎么做。

尝试:

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)
})

最新更新