【发布时间】:2017-05-29 07:04:25
【问题描述】:
我有一个函数可以轮询 api,直到返回所需的结果或达到超时期限。
// 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 内部,你需要使用 Angular 的 fakeAsync 和 tick 实用程序。
-
谢谢朱莉娅。我最终选择了 fakeAsync 方法