Reactjs 测试mapDispatchToProps的最佳方法

Reactjs 测试mapDispatchToProps的最佳方法,reactjs,redux,jestjs,redux-mock-store,Reactjs,Redux,Jestjs,Redux Mock Store,我正在编写测试mapDispatchToProps的测试,包括调度 这是我的地图 export const mapDispatchToProps = dispatch => { return { getListOfYears: url => dispatch(getListOfYears(url)) }; }; 分派的方法如下所示 export const getListOfYears = url =&

我正在编写测试mapDispatchToProps的测试,包括调度

这是我的地图

    export const mapDispatchToProps = dispatch => {
        return {
            getListOfYears: url => dispatch(getListOfYears(url))
        };
    };
分派的方法如下所示

    export const getListOfYears = url => {
        return getService(url, { actions: getActions(actionNames.GET_LIST_OF_YEARS), shouldRequest });
    };

    export const shouldRequest = () => {
        return true;
    };

    export const requestActionCreator = actionName => () => ({
        type: getRequestActionType(actionName)
    });

    export const failureActionCreator = actionName => error => ({
        type: getFailureActionType(actionName),
        payLoad: error
    });

    export const successActionCreator = actionName => response => {
        if (response && response.data && response.status === 200) {
            return {
                type: getSuccessActionType(actionName),
                payLoad: response.data
            };
        }
        return {
            type: getFailureActionType(actionName),
            payLoad: response
        };
    };

    export const getActions = actionName => ({
        requestAction: requestActionCreator(actionName),
        successAction: successActionCreator(actionName),
        failureAction: failureActionCreator(actionName)
    });

    export const getRequestActionType = actionName => `${actionName}_REQUEST`;
    export const getSuccessActionType = actionName => `${actionName}_SUCCESS`;
    export const getFailureActionType = actionName => `${actionName}_FAILURE`;
这是我开玩笑的测试用例

    it('dispatches action getListOfYears', () => {
        mapDispatchToProps(dispatch).getListOfYears(mockUrl);
        expect(dispatch.mock.calls[0][0]).toEqual(actions.getListOfYears(mockUrl))
    });
dispatch.mock.calls[0][0]为我提供了一个匿名函数。请给出测试方法的建议


谢谢。

嗯。。。为什么需要测试mDTP?或者更好的是为什么要使用它,为什么不在连接组件时使用注入的
dispatch
?这样就少了样板文件。你能给我举一个连接时注入调度的例子吗?你不需要通过mapDispatchToProps,
导出默认连接(MapStateTrops)(MyComponent)
。组件内部将有
this.props.dispatch
。当你连接它时,它已经被注入了。。。为什么需要测试mDTP?或者更好的是为什么要使用它,为什么不在连接组件时使用注入的
dispatch
?这样就少了样板文件。你能给我举一个连接时注入调度的例子吗?你不需要通过mapDispatchToProps,
导出默认连接(MapStateTrops)(MyComponent)
。组件内部将有
this.props.dispatch
。当你连接它时,它已经被注入了。