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函数移到组件之外并进行测试