Reactjs 使用Jest测试/模拟组件SVG导入

Reactjs 使用Jest测试/模拟组件SVG导入,reactjs,svg,jestjs,enzyme,react-component,Reactjs,Svg,Jestjs,Enzyme,React Component,我将SVG导入到我的组件中,并使用ReactComponent将它们作为组件导入 i、 e 当我运行jest/enzyme进行测试时,我得到一个错误: 元素类型无效:需要字符串(对于内置组件)或类/函数(对于复合组件),但得到:未定义。您可能忘记了从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入 看来我需要嘲笑一下这个?我该怎么做 谢谢尽管@skyboyer指出的解决方案对我有效,但在运行测试时控制台中显示了以下错误: <SvgrURL /> is using inco

我将SVG导入到我的组件中,并使用ReactComponent将它们作为组件导入 i、 e

当我运行jest/enzyme进行测试时,我得到一个错误: 元素类型无效:需要字符串(对于内置组件)或类/函数(对于复合组件),但得到:未定义。您可能忘记了从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入

看来我需要嘲笑一下这个?我该怎么做


谢谢

尽管@skyboyer指出的解决方案对我有效,但在运行测试时控制台中显示了以下错误:

<SvgrURL /> is using incorrect casing. Use PascalCase for React components, 
or lowercase for HTML elements.
使用了不正确的外壳。使用PascalCase作为反应组分,
HTML元素的大小写。
在模拟文件中更改为以下内容对我来说是一个解决方案:

import React from 'react';
 
const SvgrMock = React.forwardRef((props, ref) => <span ref={ref} {...props} />);

export const ReactComponent = SvgrMock;
export default SvgrMock;
从“React”导入React;
const SvgrMock=React.forwardRef((props,ref)=>);
export const ReactComponent=SvgrMock;
导出默认SvgrMock;

那么是谁将SVG加载为React组件,对吗?如果我在这里准确的话,这是一个网页加载器。你有没有试着通过
moduleNameMapper
as模仿svg?嗨@skyboyer,我相信它确实像我使用CreateReact应用程序一样使用SVGR。谢谢,我会尝试一下,并向大家汇报。嗨@skyboyer,这很有效,谢谢!你能自我回答一下吗?有些人可能会通过搜索找到这一点,几乎不阅读评论,只寻找答案
import React from 'react';
 
const SvgrMock = React.forwardRef((props, ref) => <span ref={ref} {...props} />);

export const ReactComponent = SvgrMock;
export default SvgrMock;