使用Jest Extended时toBeBefore不是函数问题求助
解决Jest Extended中
toBeBefore匹配器报错问题 问题分析
报错expect(...).toBeBefore is not a function通常由以下原因导致:
- jest-extended版本过低,
toBeBefore匹配器未被纳入 - Jest配置文件未正确全局注入jest-extended
- Jest与jest-extended版本不兼容
解决方案
1. 确认版本兼容性
jest-extended的匹配器支持情况与Jest版本强绑定:
- Jest 29.x 需搭配 jest-extended >= 3.0.0
- Jest 28.x 需搭配 jest-extended >= 2.0.0
- 更低版本Jest需对应降级jest-extended
2. 升级/安装正确版本的jest-extended
执行命令安装最新兼容版本:
npm install --save-dev jest-extended@latest
或根据你的Jest版本指定版本号,例如针对Jest 28:
npm install --save-dev jest-extended@2.0.0
3. 验证Jest配置
确保jest.config.js中的setupFilesAfterEnv配置正确,且文件放置在项目根目录:
module.exports = { testEnvironment: "node", setupFilesAfterEnv: ["jest-extended"] };
如果Jest未自动识别配置文件,可在package.json中显式指定:
{ "jest": { "testEnvironment": "node", "setupFilesAfterEnv": ["jest-extended"] } }
4. 手动注入jest-extended(备选方案)
若全局配置未生效,可在测试文件顶部手动导入:
require('jest-extended'); const { inventory, addToInventory, getInventory } = require('./inventoryController');
额外提示
你的测试用例中generatedAt被设置为3000年的日期,即使匹配器正常工作,expect(result.generatedAt).toBeBefore(currentTime)也会失败,可调整getInventory中的日期逻辑来验证匹配器功能:
return {...contents, generatedAt: new Date()};
内容的提问来源于stack exchange,提问作者Suraj Singh
相关产品推荐
相关产品推荐

