微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法在测试环境中执行可观察到的Redux的史诗

如何解决无法在测试环境中执行可观察到的Redux的史诗

用玩笑进行测试时,我的史诗中没有一个运行。

我的商店

const rootEpic = combineEpics(authEpic,initEpic,filterEpic);

const epicMiddleware = createEpicMiddleware<PayloadAction,PayloadAction>();

export const makeStore = (preloadedState?: DeepPartial<State>) =>
    configureStore({
        reducer,middleware: [epicMiddleware,errorLoggingMiddleware],devTools: process.env.NODE_ENV !== "production",preloadedState,});
export const store = makeStore();

epicMiddleware.run(rootEpic); 

测试

import { render } from "@testing-library/react";
//....
test("does not apply default filters when using one datasource",async () => {
  const initialState = ({
        filters: {
            id: "test",applied: [],},sessions: {
            test: {
                token: "token",id: "test",expiryDate: new Date(),objects: {},} as any) as State;

    const store = makeStore(initialState);
    render(
        <Provider store={store}>
// when container is mounted,it will dispatch an initDefaultFilters action.
// this action should **not** apply any of the filters.
            <Container pageId={pageId} /> 
        </Provider>
    );
    expect(store.getState().filters.applied.length).toBe(0);
});

史诗般的动作

export const initEpic: Epic<
    PayloadAction<{ dataSources: DataSourceType[]; modifiedFilters: FilterItem[] }>,any,State
> = action$ =>
    action$.ofType(initializeDefaultFilters.type).pipe(
        switchMap(({ payload: { dataSources,modifiedFilters } }) => {
            return action$.ofType(openedSession.type).pipe(
                map(() => {
                    if (dataSources.length > 1) {
                        return applyFilters({ dataSources,item: modifiedFilters });
                    }
                }),filter(s => s !== undefined),);
        }),);

我所有的异步api调用获取,阿波罗...)都被模拟了,并且在Container组件内部的某个地方,我正在分派initDefaultFilters动作,该动作从未使它到达预期的史诗。在测试环境中没有任何动作。

为什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。