私は、目的の結果が返されるまで、またはタイムアウト時間に達するまで、APIをポーリングする機能を持っています。私はpollStatus()関数を実行し、それが一度それを呼び出すために取得するのgetStatus()関数は、時間などの正確な数と呼ばれてきたが、私はイベントできないようにしたい私のテストで単体テスト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);
};
。 Observable.intervalをテストする最良の方法は何ですか?また、新しい間隔を強制的に発生させる方法はありますか?
Angularの内部にいる場合、AngularのfakeAsyncとtickユーティリティを使用する必要があります。 –
ありがとうJulia。私はfakeAsyncのアプローチで終わった – BSimpson