我想測試一個angular2應用程序。我有一個登錄表單,它使用可觀察到的數據發送給後端:茉莉花:測試事件的可觀察性
doLogin() {
this.usersService.login(this.model)
.subscribe((data) => {
console.log("In observable: " + data.isSuccess);
if (!data.isSuccess) {
this.alerts.push({});
}
});
}
在測試中我加入的服務功能,它返回觀察到的間諜,使該組成部分能夠在它的工作:
usersService.login.and.returnValue(Observable.of(
<LoginResponse>{
isSuccess: true
}));
當一切準備就緒,我派遣上提交按鈕的事件,這將觸發doLogin功能組件:
submitButton.dispatchEvent(new Event("click"));
fixture.detectChanges();
它正常工作。不幸的是,當我檢查是否usersService.login被稱爲測試:
expect(usersService.login).toHaveBeenCalled();
我得到一個錯誤,因爲觀察到沒有完成,已登錄尚未調用。
我應該如何確定,在observable完成後檢查我的間諜?
感謝:
你可以換你的測試加工成
有關詳細信息,你可以看看這個問題。我以同樣的方式執行,但在我的情況下,在組件調用服務方法之前,正在檢查toHaveBeenCalled。 –
我不確定要理解;-)組件同步調用該服務,服務方法執行異步並返回可觀察對象。對? –
是的,沒錯,但據我所知,dispatchEvent是異步的,所以test()函數在異步模式下調用,期望在調用getDogs之前檢查。 –