대리석 테스트에서 ngrx/effects를 사용하고 있습니다. 약속을 사용하는 서비스가 있습니다. 내 효과가 서비스를 호출하고 성공 및 오류 상태를 모두 처리하기를 원합니다. 나는 코드이ngrx/effects - 약속 테스트 방법
효과처럼이 : .mergeMap(() => this.service.getThings() .map((things) => new SetThingsAction(things)) .catch((error) => of(new HandleAPIErrorAction(error)) ) ) .catch((error) => of(new HandleAPIErrorAction(error)) );
서비스 : public geThings() { return Observable.fromPromise(this.promiseBasedThing.getTheThings()); }
그런 다음 테스트 : actions = hot("a", { a: new GetThingsAction() }); const response = cold("-#", {}); service.getThings.and.returnValue(response); const expected = cold("-b", { b: new HandleAPIErrorAction("error") }); expect(effects.getThings$).toBeObservable(expected);
이 모든 작동합니다. 그러나이 효과의 이중 캐치는 분명히 나쁘고 아마도 Observables가 어떻게 작동하는지 이해할 수 없다는 것을 암시합니다. 현실 세계에서는 나중에 잡는 것이 효과적입니다. 테스트에서 첫 번째 효과적입니다.
this에 따르면 약속이 구슬 테스트와 호환되지 않는 것처럼 보입니다. This SO question은 오류 처리에 대한 아이디어를 제공하지만 약속이 있기 때문에 테스트가 불가능 해 보입니다.
어떻게 오류 처리, 약속 및 테스트와 함께 ngrx/효과를 사용할 수 있습니까?