嗨,我试图测试http请求,但当我调用ngOnInit中的一个函数时,它会向我显示消息"无法读取未定义的"的属性;有人能帮我吗?
这是我的测试
it('xxxx', () => {
userServiceSpy.getUser.and.returnValue(of());
const spygetUserTwo = spyOn(
component,
'getUserTwo'
).and.callThrough();
component.ngOnInit();
expect(spygetUserTwo).toHaveBeenCalled();
});
```
The component
```
ngOnInit(): void {
this.getUserTwo();
}
getUserTwo() {
this.userService.getUser().subscribe(
(val: any) => {
console.log('xxx', val);
this.user = val;
},
(err) => {
console.log('err', err);
}
);
}
```
我敢打赌,问题是在调用component.ngOnInit()
之前先调用fixture.detectChanges()
。
fixture = TestBed.createComponent(Component);
component = fixture.componentInstance;
fixture.detectChanges(); // Remove this line
您调用的第一个fixture.detectChanges()
是在调用ngOnInit
时,由于在此fixture.detectChanges()
之前您没有模拟过this.userService.getUser()
,因此会出现无法读取未定义属性的问题。