【发布时间】:2021-03-10 09:07:30
【问题描述】:
我有一个像下面这样的自定义钩子
const useSum = (a = 1, b = 1) => {
const [sum, setSum] = useState(a + b);
useEffect(() => {
setSum(a + b);
}, [a, b]);
return sum;
}
我在我的功能组件中使用它
const MyFuncComp = () => {
const sum = useSum(1, 2);
return (
<div>{sum}</div>
);
}
在测试用例中我有这样的
describe('Testing MyFuncComp', () => {
const myFuncComp = mount(<MyFuncComp />);
it('should have value of sum', () => {
const expected = '3';
const received = myFuncComp.find('div').text();
expect(received).toEqual(expected);
});
})
它永远不会执行“useState”或“useEffect”。接收到的值始终是“未定义”;
【问题讨论】:
-
我认为您的代码没有错。你能分享一个有效的例子吗?
-
我要测试自定义钩子,可以使用@testing-library/react-hooks
-
问题是,'useState' 和 'useEffect' 没有被执行;并且由于它们没有被执行,“总和”总是“未定义”。
-
对我来说它工作正常(传递上面的代码,如果我使用
const expected = '4';会失败),react/react-dom 为 16.12,酶为 3.10;你可以检查一下你使用的版本吗? -
就像我说的那样看起来不错。我只是应付并粘贴,它按预期工作:repl.it/@tmhao2005/Todo#src/Sum/index.test.tsx。您可能需要再次检查您的测试环境
标签: reactjs unit-testing jestjs react-hooks enzyme