我需要为我在这部loadEpic
史诗中使用的自定义运算符编写大理石测试 - 这有助于我避免INITIALiZE
有时动作被调度到较晚并且我得到的问题LOAD_FAILURE
:
loadEpic: Epic<ExamManagementAction, ExamManagementAction, RootState> = (
action$,
state$
) =>
action$.pipe(
filter(isActionOf(load)),
waitFor(state$),
switchMap(() =>
this.load(state$).pipe(
map(loadSuccess),
catchError(error => of(loadFailure({ error })))
)
)
);
这就是我编写waitFor
运行良好的运算符的方式:
const waitFor = <T>(
state$: Observable<RootState>
): OperatorFunction<T, T> => source$ =>
source$.pipe(
switchMap(value =>
state$.pipe(
filter(state => state.navigation.initialized),
take(1),
mapTo(value)
)
)
);
你能帮我用rxjs-marbles/jest
或任何类似的方法编写这个测试吗?非常感谢!