Я пытаюсь скрыть в своем коде catchError
блоков, но я пробовал много подходов, и ни один из них не работает. Мой код правильно покрыт, за исключением всех catchError
блоков! Есть ли какая-то функция magi c, о которой я бы не знал?
Вот пример кода.
some.effects.ts
get$ = createEffect(() =>
this.actions$.pipe(
ofType(myActions.Get),
switchMap(({ payload }) => {
return this.httpService.get(payload).pipe(
map(res => myActions.Loaded({ payload: res })),
catchError(() => {
localStorage.removeItem('someItem');
return of(myActions.Create()))
}
);
})
)
);
some.effects.spe c .ts
it('get$ fails', () => {
function mockError() {
return new HttpErrorResponse({
error: 'error',
headers: new HttpHeaders(),
status: 404
});
}
spyOn(httpService, 'get').and.returnValue(of(mockError));
actions$ = hot('--a', { a: myActions.Get({}) });
completion$ = cold('--c', { c: myActions.Create({}) });
expect(effects.get$).toBeObservable(completion$);
expect(localStorage.removeItem).toHaveBeenCalled();
});
EDIT: файл spe c выше является лишь одним из многих фрагменты, которые я пробовал, и я не понимаю, почему это не работает. Любой совет будет безумно признателен. Кроме того, я могу протестировать catchError с помощью effects.get $ .subscribe, но по какой-то причине он пропускает покрытие кода, что является проблемой в данном случае.
Большое спасибо!