如何使用 spyOn 替换服务的 return 值?
How to replace return value of a service using spyOn?
有以下服务:
export class CounterService {
random: any = {
value: 123,
date: 456,
};
getRandom() {
return this.random;
}
}
某些组件使用此服务。在此组件中,变量 'random' 被分配了来自服务的值:
export class Page1Component implements OnInit {
random: any;
constructor(private counterService: CounterService) {}
ngOnInit() {
this.random = this.counterService.getRandom();
}
}
我尝试使用以下单元测试对其进行测试:
it('should fill random', () => {
const random = {
value: 123456,
date: 123456,
};
spy = spyOn(counterService, 'getRandom').and.returnValue(random);
expect(component.random).toEqual(random);
});
但是我收到以下错误消息:
Expected $.value = 123 to equal 123456. Expected $.date = 456 to equal
123456.
你能帮我解决这个单元测试吗?
ngOnInit 在初始化时被调用。
如果想测试ngOnInit
方法里面的操作,需要在初始化组件之前mock服务,或者手动再触发一次ngOnInit。
有以下服务:
export class CounterService {
random: any = {
value: 123,
date: 456,
};
getRandom() {
return this.random;
}
}
某些组件使用此服务。在此组件中,变量 'random' 被分配了来自服务的值:
export class Page1Component implements OnInit {
random: any;
constructor(private counterService: CounterService) {}
ngOnInit() {
this.random = this.counterService.getRandom();
}
}
我尝试使用以下单元测试对其进行测试:
it('should fill random', () => {
const random = {
value: 123456,
date: 123456,
};
spy = spyOn(counterService, 'getRandom').and.returnValue(random);
expect(component.random).toEqual(random);
});
但是我收到以下错误消息:
Expected $.value = 123 to equal 123456. Expected $.date = 456 to equal 123456.
你能帮我解决这个单元测试吗?
ngOnInit 在初始化时被调用。
如果想测试ngOnInit
方法里面的操作,需要在初始化组件之前mock服务,或者手动再触发一次ngOnInit。