无法读取未定义的读取订阅测试jasmine angular的属性



嗨,我试图测试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(),因此会出现无法读取未定义属性的问题。

相关内容

  • 没有找到相关文章

最新更新