задержка (0), вызывающая проблему покрытия кода жасмином - PullRequest
0 голосов
/ 15 марта 2020

При попытке выполнить модульное тестирование в следующем случае код не получает 100% покрытия кода. Но когда я убрал задержку (0), это сработало. Но в этом случае angular вызывает некоторые проблемы, такие как

'ExpressionChangedAfterItHasBeenCheckedError: Выражение изменилось после его проверки. Предыдущее значение: 'ngIf: false'. Текущее значение: 'ngIf: true' '

Как изменить код, чтобы получить 100% тест покрытия кода без этой проблемы с консолью?

Angular Код

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);`
...