TypeError: URL.createObjectURL不是函数——Antd Charts测试失败求助
解决Jest测试中@ant-design/plots触发的URL.createObjectURL is not a function错误
你遇到的问题根源是:Jest运行在Node.js环境中,而@ant-design/plots依赖的@antv/g2库在初始化时会调用浏览器特有的URL.createObjectURLAPI(用于创建Web Worker),Node环境默认不提供这个API,导致测试报错。以下是几个可行的解决方案:
方案一:全局模拟URL.createObjectURL
在Jest初始化流程中手动模拟该API:
- 在项目
src目录下创建setupTests.ts文件,添加代码:
global.URL.createObjectURL = jest.fn();
- 修改
jest.config.js(或jest.config.ts),将该文件配置为测试启动时的初始化脚本:
module.exports = { // 保留原有其他配置 setupFilesAfterEnv: ['<rootDir>/src/setupTests.ts'], };
方案二:Mock掉@ant-design/plots组件
如果测试不需要验证图表组件的渲染细节,直接Mock整个库可彻底避免加载底层依赖代码:
在测试文件(如App.test.tsx)顶部添加Mock代码:
jest.mock('@ant-design/plots', () => ({ Bar: jest.fn(() => null), Pie: jest.fn(() => null), Progress: jest.fn(() => null), // 根据你实际使用的组件补充对应Mock }));
方案三:确保Jest使用jsdom环境
jsdom模拟了浏览器DOM环境,内置URL.createObjectURLAPI:
- 检查
jest.config.js中的testEnvironment配置,确保设置为jsdom:
module.exports = { testEnvironment: 'jsdom', // 其他配置... };
- React 18及以上版本需手动安装
jsdom依赖:
npm install --save-dev jsdom
内容的提问来源于stack exchange,提问作者Ola_HH
相关产品推荐
相关产品推荐

