使用 jest 和 enzyme 的 useReducer hook 的单元测试
Unit test for useReducer hook with jest and enzyme
我有如下代码:
export default function func() {
const [state, setState] = useReducer(
(state, newState) => ({...state, ...newState}),
{loading: false, name: ""}
);
if(state.loading) {
return <Loader />
}
return (
<div>{state.name}</div>
);
}
我一直在 google 中搜索这个,但没有找到预期的结果。
那么为此组件编写单元测试的最佳方法是什么?
提前致谢
最好的方法是将 reducer 提取到一个单独的可测试函数中,如下所示:
export default function func() {
const [state, setState] = useReducer(reducer, {
loading: false,
name: ""
});
if (state.loading) {
return <Loader />;
}
return (
<div>{ state.name }</div>
);
}
export const reducer = (state, newState) => ({
...state,
...newState,
})
此外,在使用缩减器模式时,您的第二个参数通常是描述特定操作的“动作”。 Here's an article describing this pattern in depth.
我有如下代码:
export default function func() {
const [state, setState] = useReducer(
(state, newState) => ({...state, ...newState}),
{loading: false, name: ""}
);
if(state.loading) {
return <Loader />
}
return (
<div>{state.name}</div>
);
}
我一直在 google 中搜索这个,但没有找到预期的结果。 那么为此组件编写单元测试的最佳方法是什么?
提前致谢
最好的方法是将 reducer 提取到一个单独的可测试函数中,如下所示:
export default function func() {
const [state, setState] = useReducer(reducer, {
loading: false,
name: ""
});
if (state.loading) {
return <Loader />;
}
return (
<div>{ state.name }</div>
);
}
export const reducer = (state, newState) => ({
...state,
...newState,
})
此外,在使用缩减器模式时,您的第二个参数通常是描述特定操作的“动作”。 Here's an article describing this pattern in depth.