我正在测试一个Angular 4组件,它带有一个函数,该函数会进行HTTP请求(返回一个observable),然后在observable的subscribe方法中调用另一个函数。我想测试subscribe中的函数是否被正确地调用了。该组件如下:
logIn(): void {
this.loginService.logIn(user)
.subscribe(() => {
this.router.navigateByUrl('/')
})
}
我已经在组件的规范中模拟了该服务:
loginServiceStub = {
logIn(user: User) {
return Observable.of(true)
},
}
我已经将间谍附加到路由器和登录服务上,以便知道它们是否被调用:
const logInSpy = spyOn(loginService, 'logIn')
const navigateByUrlSpy = spyOn(router, 'navigateByUrl')
在调用组件的登录方法时,logInSpy被调用,但navigateByUrlSpy没有被调用,并且订阅方法也未运行。我应该如何设置模拟登录以使其正常工作?