[英]How to subscribe to a normal function as an Observable in Angular
[英]how to check subscribe function is working in angular?
我想使用茉莉花对组件中存在的我的功能进行单元测试。 在该函数内部存在subscribe
函数。我想测试用户是否获得响应的功能ID是否应该导航到/user
组件。
功能
onSubmit(val) {
console.log(val);
this.signupService.signUpHandler(val).subscribe((res:SignUpModel) => {
if (res.token !== '') {
this.router.navigate(['/users']);
}
}, (err) => {
console.log(err);
});
}
这是我的代码https://stackblitz.com/edit/angular-testing-kdb8ka?file=app%2Fapp.component.ts
我可以检查我的service
功能是否在单击按钮时被调用
it('should called service method on button click', inject([SignupserviceService], (signupserviceService: SignupserviceService) => {
spyOn(signupserviceService, 'signUpHandler');
let button = fixture.nativeElement.querySelector('.btn')
button.click();
expect(signupserviceService.signUpHandler).toHaveBeenCalled();
}));
现在,我想检查是否从服务获得响应,然后重定向到
\\user\u003c/code>组件。
假设成功,您只需要监视正在订阅的函数并返回期望的响应即可:
it('should call the router's navigate method if a non-empty string token property is on the response', inject([SignupserviceService, Router], (signupserviceService: SignupserviceService, router: Router) => {
spyOn(signupserviceService, 'signUpHandler').and.returnValue(Observable.of({token: 'not empty'}));
spyOn(router, 'navigate');
let button = fixture.nativeElement.querySelector('.btn');
button.click();
expect(router.navigate).toHaveBeenCalledWith(['/users']);
})
);
将其视为伪代码,因为我没有检查它是否有错误,但是您明白了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.