[英]How to write test case for rxjs interval in angular 8?
我在 app.component.ts 中有一個方法“intervalCall()”,並使用 rxjs 間隔每 60 秒發送一次請求,所以想為它的 spect 文件測試用例,下面是方法。
intervalCall() {
interval(60 * 1000)
.pipe(mergeMap(() => this.XYZService.XYZmethod()))
.subscribe((data: StatusDependents) => {
if (data.status === 'UP') {
location.reload();
}
});
}
this.XYZService.XYZmethod() 是我每 60 秒發送一次的服務調用。
我在測試用例下面寫下了,仍然在隊列中出現 1 個周期性計時器的錯誤。
describe('#intervalCall', () => {
it('should call intervalCall method when status is UP', fakeAsync(() => {
const statusData: StatusDependents = { status: 'UP' };
const statusSpy = jest.spyOn(userService, 'statusDependents').mockReturnValue(of(statusData));
component.intervalCall();
fixture.detectChanges();
tick(180500);
expect(statusSpy).toHaveBeenCalled();
flush();
}));
});
使用 fakeAsync。 在這里查看它是如何使用的: https ://v8.angular.io/guide/testing
我發現的主要優勢是您在單元測試時無需等待真正的秒數,您可以使用tick(180500)
立即向前跳 3 分 ½ 秒。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.