如何对rxjs间隔进行单元测试

时间:2019-07-31 10:29:43

标签: angular rxjs jasmine karma-runner

我正在尝试编写具有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”

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

可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

通常,您的代码对我来说看起来不错。您的方法超级有效,我自己这样做。因此,我认为这更像是您的一般设置问题。也许这可以帮助您Testing | Cannot read property 'assertPresent' of undefined at resetFakeAsyncZone

相关问题