Enzyme React Adapter运行测试报mount is not a function如何解决
问题解决方案
错误根因
@wojtekmaj/enzyme-adapter-react-17 是Enzyme针对React17的适配工具包,本身不导出mount、shallow这类组件渲染方法,这类方法仅由enzyme核心包提供,错误的导入来源是触发该TypeError的核心原因。
修复步骤
1. 修正导入与配置逻辑
首先调整测试文件的导入代码,示例如下:
// 错误写法(你当前的写法) // import { mount } from '@wojtekmaj/enzyme-adapter-react-17' // 正确写法 import { mount } from 'enzyme' import Enzyme from 'enzyme' import Adapter from '@wojtekmaj/enzyme-adapter-react-17' // 手动配置适配器 Enzyme.configure({ adapter: new Adapter() })
2. (可选)全局配置适配器减少重复代码
如果是Create React App脚手架创建的项目,可直接在src/setupTests.js文件中添加全局适配器配置,所有测试用例执行前会自动加载该配置,无需在每个测试文件重复写配置逻辑:
// src/setupTests.js import Enzyme from 'enzyme' import Adapter from '@wojtekmaj/enzyme-adapter-react-17' Enzyme.configure({ adapter: new Adapter() })
配置完成后,测试文件仅需要保留import { mount } from 'enzyme'即可正常使用渲染方法。
3. 验证依赖安装完整性
确认package.json的开发依赖中同时存在enzyme和@wojtekmaj/enzyme-adapter-react-17,缺失的话执行对应安装命令:
# npm 安装 npm install --save-dev enzyme @wojtekmaj/enzyme-adapter-react-17 # yarn 安装 yarn add --dev enzyme @wojtekmaj/enzyme-adapter-react-17
如果存在版本冲突,可删除node_modules文件夹和锁文件(package-lock.json/yarn.lock)后重新执行安装命令。
4. 其他排查项
- 确认当前项目React版本为17.x,该适配包不支持React18及以上版本
- 检查测试文件中没有拼写错误,
mount为全小写,不要误写为Mount等格式
内容的提问来源于stack exchange,提问作者Martin Gonzalez
相关产品推荐
相关产品推荐

