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

Jest无限挂起且未执行任何测试,求解决方法

解决Jest不执行测试且计数无限增长的问题

我之前也碰到过一模一样的情况!当时折腾了好一阵才搞定,给你几个可以尝试的排查方向:

  • 检查测试文件的命名与匹配规则
    Jest默认只会识别符合特定命名的测试文件,比如*.test.js、*.spec.js,或者放在__tests__目录下的文件。如果你的测试文件命名不符合这个默认规则,Jest会找不到可用的测试用例,进而出现这种计数无限增长的情况。你可以在jest.config.js里查看testMatch或testRegex配置项,调整成适配你文件命名的匹配格式。

  • 排查异步代码的收尾逻辑
    如果你的测试用例里包含异步操作(比如Promise、setTimeout这类),但没有用async/await、done回调,或者忘记返回Promise,Jest会一直等待异步操作完成,导致计数停不下来。仔细检查你的测试代码,确保所有异步逻辑都正确收尾:

    // 正确示例:用async/await处理异步
    test('异步数据获取测试', async () => {
      const result = await fetchTargetData();
      expect(result).toBe('预期数据');
    });
    
    // 或者用done回调告知Jest测试完成
    test('异步数据获取测试', (done) => {
      fetchTargetData().then(result => {
        expect(result).toBe('预期数据');
        done(); // 必须调用done,否则Jest会一直等待
      });
    });
    
  • 彻底清理依赖与缓存
    虽然你已经用了--no-cache,但有时候残留的缓存或依赖冲突还是会搞事情。可以试试:

    • 删除node_modules和锁文件,重新安装依赖:
      rm -rf node_modules package-lock.json yarn.lock
      npm install # 或者用 yarn install
      
    • 手动删除Jest的缓存目录(默认是node_modules/.cache/jest),再重新运行测试。
  • 检查Jest与Node版本的兼容性
    你使用的Node版本是8.9.4,属于比较旧的版本了,部分新版本的Jest已经不再支持Node 8。可以尝试把Jest降级到兼容的版本,比如Jest 24.x系列(Jest 25及以上版本不再支持Node 8)。修改package.json里的Jest版本后重新安装:

    "devDependencies": {
      "jest": "^24.9.0"
    }
    
  • 排查全局钩子的异步逻辑
    如果你的setupFiles、setupFilesAfterEnv配置文件,或者全局的beforeAll/afterAll钩子中存在未正确处理的异步操作,也会导致Jest一直处于等待状态。检查这些全局配置代码,确保异步逻辑都能正常完成。

你可以按上面的顺序逐一排查,应该能找到问题根源!

内容的提问来源于stack exchange,提问作者Abraham P

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:55:05