如何为redux observalbe Epic中使用的自定义RxJS操作符编写大理石测试
我需要为此如何为redux observalbe Epic中使用的自定义RxJS操作符编写大理石测试,rxjs,jestjs,reactive-programming,redux-observable,rxjs-marbles,Rxjs,Jestjs,Reactive Programming,Redux Observable,Rxjs Marbles,我需要为此loadEpicepic中使用的自定义运算符编写MABLE测试-这有助于我避免操作INITIALiZE有时被延迟调度,并且我遇到LOAD\u故障: loadEpic: Epic<ExamManagementAction, ExamManagementAction, RootState> = ( action$, state$ ) => action$.pipe( filter(isActionOf(load)), w
loadEpic
epic中使用的自定义运算符编写MABLE测试-这有助于我避免操作INITIALiZE
有时被延迟调度,并且我遇到LOAD\u故障
:
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 })))
)
)
);
你能帮我用
rxjsmarbles/jest
或任何类似的方法编写这个测试吗?非常感谢 您描述了三个事件流:
it('should reject given values until navigation is initialized', () => {
const state$ = hot(' -i--u--u-i-- ', {u: {navigation: {initialized: false}}, i: {navigation: {initialized: true}}});
const action$ = hot(' v----v--v--- ', {v: load});
const expect$ = cold(' -v-------v-- ', {v: load});
expect(action$.pipe(waitFor(state$))).toBeObservable(expect$);
});
请注意我是如何格式化代码的,以便在另一个流下描述一个流的。它确实有助于处理长时间的事件序列
您还可以为边缘案例编写单独的规范。这取决于您要测试的行为。到目前为止您尝试了什么?有很好的例子和文档。首先阅读它们,并尝试自己实现它。如果出现故障,请附上测试代码并询问。
it('should reject given values until navigation is initialized', () => {
const state$ = hot(' -i--u--u-i-- ', {u: {navigation: {initialized: false}}, i: {navigation: {initialized: true}}});
const action$ = hot(' v----v--v--- ', {v: load});
const expect$ = cold(' -v-------v-- ', {v: load});
expect(action$.pipe(waitFor(state$))).toBeObservable(expect$);
});