【发布时间】:2018-02-01 08:13:52
【问题描述】:
我正在使用一个函数测试 Angular 4 组件,该函数发出一个 HTTP 请求(返回一个 observable),然后在 observables 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 没有被调用,subscribe 方法没有被运行。我应该如何设置模拟登录以使其正常工作?
【问题讨论】:
标签: angular unit-testing jasmine rxjs