Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何涵盖react hooks组件内部函数的测试-酶/Jest_Reactjs_Unit Testing_Jestjs_React Hooks_Enzyme - Fatal编程技术网

Reactjs 如何涵盖react hooks组件内部函数的测试-酶/Jest

Reactjs 如何涵盖react hooks组件内部函数的测试-酶/Jest,reactjs,unit-testing,jestjs,react-hooks,enzyme,Reactjs,Unit Testing,Jestjs,React Hooks,Enzyme,我对测试很陌生 假设我有一个下面的组件 export default function ResolutionCount({ componentUsedIn }) { const dispatch = useDispatch(); const userID = useSelector( (state) => state.userInfoReducer.userInfo[0]["user_id"] ); useEffect

我对测试很陌生

假设我有一个下面的组件

export default function ResolutionCount({ componentUsedIn }) {
    const dispatch = useDispatch();

    const userID = useSelector(
        (state) => state.userInfoReducer.userInfo[0]["user_id"]
    );

    useEffect(() => {

        dispatch({
            type: SET_RESOLUTION_STATUS_COUNT_BAR_CHART_FETCHING_DATA,
            payload: true,
        });
        dispatch(getResolutionStatusCount([]));

        return () => {
            dispatch({
                type: SET_RESOLUTION_STATUS_COUNT_BAR_CHART,
                payload: {
                    barChartData: [],
                    barChartCategories: [],
                    resolution_status_environment: [],
                },
            });
        };
    }, []);

    const handleSelection = (selectedData) => {

        dispatch({
            type: SET_RESOLUTION_STATUS_COUNT_SELECTED_ENV,
            payload: selectedData,
        });

        dispatch(
            getResolutionCount(
                [],
                startDate,
                endDate,
                false,
                selectedData
            )
        );
    };

    return (
        <Fragment>
            <Space>
                <DateRangePicker
                    componentUsedIn={componentUsedIn}
                ></DateRangePicker>
                <Selection
                    options={environment}
                    handleSelection={handleSelection}
                ></Selection>
            </Space>
            <BarChart componentUsedIn={componentUsedIn}></BarChart>
        </Fragment>
    );

}
导出默认函数ResolutionCount({componentUsedIn}){
const dispatch=usedpatch();
const userID=useSelector(
(state)=>state.userInfoReducer.userInfo[0][“用户id”]
);
useffect(()=>{
派遣({
类型:设置\分辨率\状态\计数\条形图\获取\数据,
有效载荷:对,
});
调度(getResolutionStatusCount([]);
return()=>{
派遣({
类型:设置分辨率、状态、计数、条形图、,
有效载荷:{
条形图数据:[],
条形图类别:[],
解决方案\状态\环境:[],
},
});
};
}, []);
const handleSelection=(selectedData)=>{
派遣({
类型:设置\分辨率\状态\计数\选定\环境,
有效载荷:选择的数据,
});
派遣(
getResolutionCount(
[],
开始日期,
结束日期,
假,,
选定数据
)
);
};
返回(
);
}
在此选择中,DateRangePicker和条形图组件用
React.memo()
包装。现在,对于单元测试,我实际上使用了jest和Ezyme,为了在Ezyme的浅层中运行useEffect,我使用了另一个名为

实际上,我想测试
ResolutionCount
组件中的
handleSelection
函数。因为测试用例没有涵盖该功能。我查阅了酶的文档,了解如何调用这个函数,我发现如果它是一个基于类的组件,我们可以得到包装器的实例并调用这个函数。但是在组件中,我们应该如何测试组件内部的功能

我通过了,但这没有帮助

我还了解到,测试内部实现不是最佳实践。在这种情况下,此功能将不包括测试覆盖率,对吗?这样可以吗

有人能帮我/给我提建议吗


如果这个问题再次出现,请原谅,并提前向您表示感谢

当涉及到测试功能组件时,我认为这通常是一种很好的方法,您尝试测试组件的行为,而不是实现


因此,当涉及到您的案例时,我们的想法是模拟选择(我认为它本质上是一个html
select
),并检查使用
selectedData
更新您的redux存储的一些行为。谢谢您的回复。所以我想做的是将handleSelection函数移到组件之外并进行测试