При попытке выполнить модульное тестирование в следующем случае код не получает 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);`