You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 10:44:53