reactjs - 使用字体真棒图标测试反应组件时出现控制台错误
问题描述
我在 react 项目中使用 font-awesome 并使用jest
withenzyme
进行测试。我能够显示字体很棒的图标,但是在执行单元测试时,它会引发以下错误:
console.error node_modules/@fortawesome/react-fontawesome/index.js:325
Could not find icon { prefix: 'fas', iconName: 'arrow-right' }
console.error node_modules/@fortawesome/react-fontawesome/index.js:325
Could not find icon { prefix: 'fas', iconName: 'arrow-right' }
console.error node_modules/@fortawesome/react-fontawesome/index.js:325
Could not find icon { prefix: 'fas', iconName: 'arrow-right' }
console.error node_modules/@fortawesome/react-fontawesome/index.js:325
Could not find icon { prefix: 'fas', iconName: 'arrow-right' }
console.error node_modules/@fortawesome/react-fontawesome/index.js:325
Could not find icon { prefix: 'fas', iconName: 'arrow-right' }
注意:仅当我mount
使用enzyme
. 当我shallow
使用enzyme
.
我已导入图标并添加到库中,如下所示:
import { library } from '@fortawesome/fontawesome-svg-core';
import { fab } from '@fortawesome/free-brands-svg-icons';
import { faArrowRight } from '@fortawesome/free-solid-svg-icons';
...
library.add(fab, faArrowRight);
我使用了如下图标:
<FontAwesomeIcon icon='arrow-right' />
我正在使用以下软件包:
...
"@fortawesome/fontawesome-svg-core": "^1.2.20",
"@fortawesome/free-brands-svg-icons": "^5.10.0",
"@fortawesome/free-regular-svg-icons": "^5.10.0",
"@fortawesome/free-solid-svg-icons": "^5.10.0",
"@fortawesome/react-fontawesome": "^0.1.4",
"enzyme": "^3.10.0",
"enzyme-adapter-react-16": "^1.14.0",
"react": "^16.9.0",
"react-dom": "^16.9.0",
...
解决方案
如果您使用的是 create-react-app ,则有一种比模拟更简单的方法。创建一个只注册图标的模块,可能命名为 registerFaIcons.js。然后,您的 React 应用程序和 Jest 测试都可以使用它。
来源并参考这些问题 - https://github.com/FortAwesome/react-fontawesome/issues/154
import { library } from '@fortawesome/fontawesome-svg-core';
import {
faSpinner
} from '@fortawesome/free-solid-svg-icons';
export default function registerIcons() {
library.add(
faSpinner
);
}
因此,使用 create-react-app,您可以在 setupTests.js 文件中放置导入和调用 registerIcons 方法的代码。这将注册供所有测试使用的图标,FA 图标将按预期呈现。
import registerFaIcons from './registerFaIcons';
registerFaIcons();
推荐阅读
- java - 如何配置 Thymeleaf 模板位置
- php - 如何在 PHP Simple XML 中集成一个链接来解析
- java - 如何在JTable(JAVA)中显示FK ID的引用
- css - 如何在Foundation XY-grid(flexbox)中均匀分布单元格高度
- deep-learning - 关于二维人体姿态检测的两个问题
- python - 使用 pandas.read_csv 时如何忽略一些不在引号内的逗号?
- marker - Mapbox GL JS 标记超出地图
- android - 更新数据库后刷新活动或列表视图
- postgresql - Gorm 无法连接到本地 postgres 数据库
- python - TypeError:“numpy.float64”对象不能被解释为整数并且转换为 int 失败