如何使用Jest+Enzyme测试带React Hooks的函数式组件内部函数
React函数式组件内部事件函数的测试问题
组件实现
用户编写了一个使用useState Hook的函数式组件,核心代码如下:
import React,{useState} from 'react'; export const PList = (props) => { const [obj, setObj] = useState({ value: null, open: null }); let onDeleteList = (data) => { setObj({....}); }; return ( <React.Fragment> { props.arr.map((p, i) => { return <childA onDeleteList={onDeleteList} /> }) } </React.Fragment> ); }
测试尝试
用户当前技术栈为Jest + Enzyme,希望为组件内部定义的onDeleteList函数编写测试用例,自行编写的测试代码如下:
describe('PList', () => { let wrapper = shallow(<Plist {...props} />); it('should call onDeleteList', () => { expect(wrapper.find('onDeleteList')).toBeTruthy(); }); });
遇到的问题
- 无法确认现有测试写法的正确性
- 测试运行后,覆盖率报告始终提示
onDeleteList()函数未被有效覆盖 - 不清楚这类定义在函数式组件内部、通过props传递给子组件的函数,应该如何编写正确的测试逻辑
内容的提问来源于stack exchange,提问作者user1122
相关产品推荐
相关产品推荐

