reactjs - 无法使用 React 测试库测试包含钩子的 HOC
问题描述
以下是 HOC 的代码
const HOC = ({ component: Component }) => {
return () => {
const id = useQuery(query);
return (<div>
{!id ? ( <SomeOtherComponent prop1={'hello'} prop2={'world'} /> ) : ( <Component /> )}
</div>)
}
}
下面是渲染 HOC 的测试-
const myComponent = () => <div data-testid={'component-testid'}>ABC</div>;
const renderHOC = HOC({component: myComponent})();
const {getByTestId} = render(renderHOC);
expect(getByTestId('component-testid')).toBeInTheDocument();
获取错误-无效的挂钩调用。必须在反应功能组件内调用反应钩子。
解决方案
应该如下
const RenderHOC = HOC({component: myComponent});
const { getByTestId } = render(<RenderHOC />);
如果组件包含挂钩,则不能将组件作为函数调用。
推荐阅读
- c# - 如何获得不过滤或不做某事的空规范?
- go - 如何在连接关闭时终止正在运行的查询
- amazon-web-services - 从保留最早可恢复时间之前的时间点恢复 Aurora DB
- c# - 尝试创建新事件时出现身份验证范围不足错误
- stripe-payments - Stripe Checkout 是否支持免费计划?
- ruby-on-rails - Ruby - 对 Post 请求的正文进行编码
- ubuntu - 在 NGINX (Ubuntu 18) 上启用 TLS 1.0 和 1.1
- python - Odoo Many2many 字段也只能通过循环获得单个记录
- python - SA指数配对样本的调整spearman等级相关性
- javascript - 如何给一个选项多个值并在不同的区域显示这些值?