我有一个角度组件正在使用依赖于另一个服务(service2)的服务(service1)。
我该如何测试?我想模拟两种服务。
export class service2 {
public someFunction() {}
constructor() {}
}
export class service1 {
public somOtherFunction() {}
constructor(s: Service2) {
this.s.someFunction();
}
}
@Component({
selector: 'component',
providers: [Service1],
})
export class component {
constructor(private service:Service1) {
this.service.someOtherFunction();
}
}
我的测试台看起来像这样。
describe('component', () => {
let component: Spectator<component>;
const createComponent = createComponentFactory();
beforeEach(() => component = createComponent());
it('should create', () => {
expect(component).toBeTruthy();
});
});
相当标准,但是我无法弄清楚如何模拟服务。 谁能帮忙??
答案 0 :(得分:0)
更新
根据我们是否提供组件级别或模块级别的服务,我们可以通过componentProviders: []
或providers:[]
覆盖并实质上模拟它们
请尝试以下操作:
class MockedService1 {
someOtherFunction() {
return 'Some stubbed values';
}
}
const createComponent = createComponentFactory({
component: YourComponentUnderTest,
componentProviders: [
{ provide: Service1, useClass: MockedService1 },
// { provide: Service2, useClass: Service2 }
],
imports: []
});
如果依赖关系层次结构为Component -> Service1 -> Service2
,则在模拟Service1时,我们不必模拟Service2。