Create React App项目中如何配置Jest实现IndexedDB Mock无报错
Create React App 下IndexedDB Mock 正确配置方案
Create React App(简称CRA)默认封闭了Jest配置的自定义入口,直接在package.json中添加jest字段的配置会被拦截报错,无需eject也无需覆盖默认配置,可通过以下两种方式实现需求:
- 第一步:先删除package.json中你自行添加的整个
jest配置块,该配置CRA不识别会触发报错,devDependencies中已经安装的fake-indexeddb等依赖保留即可,无需改动。
方案1:全局生效(所有测试用例自动加载IndexedDB mock)
CRA默认会自动执行src目录下的
setupTests.js文件内的所有代码,无需额外配置。
操作步骤:
- 进入src目录,找到
setupTests.js(如果不存在就新建该文件) - 在文件顶部添加如下代码:
require('fake-indexeddb/auto'); // 若使用ESModule语法,可写为 import 'fake-indexeddb/auto'
- 可以删除对应测试文件中单独引入
fake-indexeddb/auto的代码,全局引入后所有测试运行前都会自动注入mock的IndexedDB对象。
方案2:局部生效(仅给需要的测试文件引入mock)
如果不需要所有测试都加载IndexedDB mock,可以只在用到IndexedDB的测试文件顶部第一行引入,注意要放在引入Dexie等依赖的前面,避免初始化时找不到全局IndexedDB对象,示例代码:
// 第一行先引入fake-indexeddb require('fake-indexeddb/auto'); const Dexie = require("dexie"); const db = new Dexie("PersonsDB"); // 后续测试逻辑
配置完成后重新运行测试命令即可正常运行,不会再出现配置不支持的报错。
内容的提问来源于stack exchange,提问作者Greed94
相关产品推荐
相关产品推荐

