簡體   English   中英

如何在角度 8 中為 rxjs 間隔編寫測試用例?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM