delay(0)导致茉莉花代码覆盖问题

时间:2020-03-15 06:04:23

标签: angular rxjs jasmine karma-runner

在尝试对以下情况进行单元测试时,代码未获得100%的代码覆盖率。但是,当我删除delay(0)时,它起作用了。但是在那种情况下,角度引起诸如

之类的问题

'ExpressionChangedAfterItHasBeenCheckedError:检查表达式后,表达式已更改。先前的值:'ngIf:false'。当前 值:'ngIf:true”

在没有此控制台问题的情况下,如何更改代码以获得100%的代码覆盖率测试?

角度代码

ngAfterViewInit() {
this.loaderService.getLoader$
  .pipe(delay(0),skip(1),takeUntil(this.unsubscribe$))
  .subscribe(loaderObj => {
    let isEnabled = false;
    this.loaderApis.forEach(loaderApi => {
      let filterobj = loaderObj.filter(z => z.apiEndPoints == loaderApi)[0];
      if (filterobj.isLoaderEnabled) {
        isEnabled = true;
        return;
      }
    });
    this.isEnabled = isEnabled;
  });

}

单元测试

`const loaderApiList: Loader[] = [{ apiEndPoints: API_URLS.ACCOUNT, isLoaderEnabled: true },
{ apiEndPoints: API_URLS.STATEMENT_MONTH_LIST, isLoaderEnabled: false }];
component.loaderApis = loaderList;
loaderService.loaderList = loaderApiList;

fixture.detectChanges();
loaderSubj.next(loaderApiList);
expect(component.loaderApis).toEqual(loaderList);`

0 个答案:

没有答案