如何在jest.config.js中配置jest-json-schema全局扩展
Jest全局注册jest-json-schema匹配器正确配置方法
直接将expect.extend(matchers)逻辑写在jest.config.js配置导出块里是错误操作:Jest配置文件仅用于返回配置参数,不会在测试运行沙箱中执行匹配器扩展逻辑,这就是你触发Unresolved function or method extend()报错的原因。
按以下步骤配置即可实现全局可用:
- 新建单独的测试初始化文件,比如在项目根目录创建
jest.setup.js,写入匹配器注册代码:
// CommonJS规范用以下写法 const { matchers } = require('jest-json-schema'); expect.extend(matchers); // ES模块规范替换为以下写法即可 // import { matchers } from 'jest-json-schema'; // expect.extend(matchers);
- 修改现有
jest.config.js配置,新增setupFilesAfterEnv字段,指定刚才创建的初始化文件路径。该配置下的文件会在Jest测试框架加载完成、每个测试文件执行前自动运行,是注册全局匹配器的指定位置:
module.exports = async () => { return { verbose: true, setupFilesAfterEnv: ['./jest.setup.js'] // 路径按setup文件实际存放位置调整 }; };
注意:不要用
setupFiles配置项加载匹配器注册逻辑,该配置项对应文件执行时,Jest的expect等测试API还未完成初始化,同样会出现方法找不到的报错。
配置修改完成后重启Jest测试进程,所有测试文件内即可直接调用jest-json-schema提供的匹配器,无需在单个测试文件中重复导入扩展。
内容的提问来源于stack exchange,提问作者Kate Velasquez
相关产品推荐
相关产品推荐

