Ger*_*son 3 unit-testing jasmine rxjs angular
我正在使用一个函数来测试一个Angular 4组件,该函数发出一个HTTP请求(返回一个observable),然后在observables subscribe方法中调用另一个函数.我想测试正确调用subscribe中的函数.该组件如下所示:
logIn(): void {
this.loginService.logIn(user)
.subscribe(() => {
this.router.navigateByUrl('/')
})
}
Run Code Online (Sandbox Code Playgroud)
我在组件规范中嘲笑了这项服务:
loginServiceStub = {
logIn(user: User) {
return Observable.of(true)
},
}
Run Code Online (Sandbox Code Playgroud)
我已经将一个间谍附加到路由器和登录服务,以了解它们是否已被调用:
const logInSpy = spyOn(loginService, 'logIn')
const navigateByUrlSpy = spyOn(router, 'navigateByUrl')
Run Code Online (Sandbox Code Playgroud)
调用组件登录方法时,正在调用logInSpy,但没有调用navigateByUrlSpy,并且没有运行subscribe方法.我应该如何设置模拟logIn以使其正常工作?
Son*_*300 10
请尝试以下方法
存根:
loginServiceStub = {
logIn: jasmine.createSpy('logIn').and.returnValue(Observable.of(true))
}
Run Code Online (Sandbox Code Playgroud)
在测试中:
const navigateByUrlSpy = spyOn(router, 'navigateByUrl').and.callThrough();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8348 次 |
| 最近记录: |