我的 React 代码中有一个功能组件,如下所示:
const Compo = ({funcA}) => {
useEffect(() => {
window.addEventListener('x', funcB, false);
return () => {
window.removeEventListener('x', funcB, false);
}
});
const funcB = () => {funcA()};
return (
<button
onClick={() => funcA()}
/>
);
};
Compo.propTypes = {
funcA: func.isRequired
}
export default Compo;
我需要测试上述功能组件,以确保添加和删除事件侦听器,如 useEffect() 挂钩中所述。
这是我的测试文件的样子 -
const addEventSpy = jest.spyOn(window, 'addEventListener');
const removeEventSpy = jest.spyOn(window, 'removeEventListener');
let props = mockProps = {funcA: jest.fn()};
const wrapper = mount(<Compo {...props} />);
const callBack = wrapper.instance().funcB; <===== ERROR ON THIS LINE
expect(addEventSpy).toHaveBeenCalledWith('x', callBack, false);
wrapper.unmount();
expect(removeEventSpy).toHaveBeenCalledWith('x', callBack, false);
但是,我在声明“callBack”常量的行(在上面的代码中突出显示)出现以下错误:
TypeError:无法读取 null 的属性“funcB”
实际上,它使组件正常,但 wrapper.instance() 评估为 null,这会引发上述错误。
有人会知道我缺少什么来解决上述错误吗?