2017-08-23 37 views
1

我正在測試一個函數,使一個HTTP請求(返回一個觀察),然後調用observables訂閱方法中的另一個函數的Angular 4組件。我想測試訂閱中的函數是否正確調用。該組件是這樣的:一個函數返回一個可觀察的間諜

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是不是和訂閱方法沒有運行。我應該如何設置模擬登錄才能使其工作?

回答

2

嘗試使用以下

存根:

loginServiceStub = { 
    logIn: jasmine.createSpy('logIn').and.returnValue(Observable.of(true)) 
} 

在測試:

const navigateByUrlSpy = spyOn(router, 'navigateByUrl').and.callThrough(); 
相關問題