Angular 如何单元测试rxjs间隔

Angular 如何单元测试rxjs间隔,angular,rxjs,jasmine,karma-runner,Angular,Rxjs,Jasmine,Karma Runner,我正在尝试编写一个100%代码覆盖率(行)的单元测试,但我被以下代码片段卡住了: getValuesPeriodically(updateInterval: number) { interval(updateInterval) .subscribe(() => this.getFilesFromService() ); } 我不知道如何涵盖这一部分: () => this.getFilesFromService() 我尝试用fa

我正在尝试编写一个100%代码覆盖率(行)的单元测试,但我被以下代码片段卡住了:

getValuesPeriodically(updateInterval: number) {
    interval(updateInterval)
      .subscribe(() =>
        this.getFilesFromService()
    );
  }
我不知道如何涵盖这一部分:

() =>
  this.getFilesFromService()
我尝试用fakeAsync和tick()实现一个单元测试,但异步给了我一条错误消息:

it('timer test', fakeAsync(() => {

      fixture.detectChanges();
      expect(component.filesData.length).toBe(0);
      tick(1000);
      fixture.detectChanges();
      expect(component.filesData.length).toBeGreaterThan(0);

    }));
我得到以下错误:

TypeError:无法读取null的属性“assertPresent”

我不确定这是否是覆盖单元测试缺失部分的正确方法


你能帮忙吗?

总的来说,我觉得你的代码不错。你的方法非常有效,我自己就是这么做的。所以我认为这更像是你的一般设置的问题。也许这可以帮助您

通常在测试异步可观察对象时,您需要将
TestScheduler
的实例传递到
interval
以避免使用实际延迟。