在这里,我正在使用redux-observable
并且在测试错误处理时遇到了一些问题。
请参阅以下注销用户史诗:
const logoutUserEpic = (action$) => action$
.ofType(LOGOUT_USER)
.mergeMap(() =>
Observable.from(
graphQl(AuthLogout)
.catch((error) => failure(error))
)
.mergeMap(() => Observable.of(
receive(),
push('/login')
)
)
)
这是一个模拟graphQl
服务的测试,以确保它在承诺拒绝时触发失败操作:
it('should return the error action', () => {
const error = Error('fail')
request.graphQl = () => Promise.reject(error)
const action$ = ActionsObservable.of((logoutUser()))
return logoutUserEpic(action$)
.toArray()
.forEach((actions) => {
expect(actions).toEqual([{
meta: { isFetching: false },
payload: error,
type: FAILURE
}])
})
})
在测试中,它调度的是在 mergeMap 中展平的动作,而不是在 catch 中预期的失败动作。
像这样设置错误处理是否有效,或者我是否表现出我对 RxJs 的无知?