我有一個函數可以查詢api,直到返回所需的結果或者達到超時時間。單元測試Observable.interval
// sample poll, filter and timeout
pollStatus =(): Observable<string> => {
return Observable.interval(1000)
.mergeMap(() => this.getStatus(); // this makes a http call to a status api
.map((response) => response.json())
.filter((responseData) => responseData.status !== 'PENDING')
.take(1)
.map((response) => response.status)
.catch((error) => Observable.throw({message: 'FAILED'}))
.timeout(5000);
};
在我的測試我想執行的pollStatus()函數,並確保的getStatus()函數被調用的時間等正確的號碼,但我不能活動得到它調用它一次。測試Observable.interval的最佳方式是什麼,以及如何強制發生新的時間間隔?
如果你在Angular裏面,你需要使用FakeAsync和Angular的實用工具。 –
謝謝Julia。我結束了與fakeAsync方法 – BSimpson