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

添加新配置后Jest测试脚本执行异常问题求助

NestJS Jest测试通过但脚本崩溃问题

问题场景

在使用NestJS框架时,执行测试脚本:

"test:cov": "jest --runInBand --coverage --watchAll=false --detectOpenHandles --forceExit"

所有测试用例均执行通过,但脚本最终出现崩溃。该问题始于在jest.config.js的roots属性中添加新路径之后。

原本使用的依赖版本为jest@29.5.0和ts-jest@29.0.5,将二者降级至jest@27.2.5和ts-jest@27.0.3后,崩溃问题得到解决。

可能原因分析

  1. Jest 29与ts-jest 29的兼容性bug:Jest 29版本在多roots路径的处理逻辑上存在缺陷,结合覆盖率收集功能时,对新路径下的文件进行资源扫描或加载可能出现异常,导致即使通过--forceExit也无法正常终止进程。
  2. 新路径下的资源泄漏:新增的roots路径中可能包含非测试文件(如业务模块、工具类),这些文件被Jest意外加载后,存在未关闭的资源连接(如数据库连接、WebSocket服务),Jest 29的--detectOpenHandles机制未能正确识别或处理这些资源,引发进程崩溃。
  3. 覆盖率收集机制冲突:Jest 29的覆盖率收集模块在处理多根路径时,可能出现内存泄漏或文件遍历异常,进而导致脚本崩溃。

额外排查方向

  • 检查新增的roots路径,确认是否包含非测试文件,可通过testMatch或testPathIgnorePatterns配置限制Jest仅加载测试文件。
  • 移除--forceExit参数,运行测试脚本查看崩溃时的详细错误栈,定位具体的资源泄漏点。
  • 尝试升级jest和ts-jest至29.x系列的最新稳定版本,验证官方是否已修复相关路径处理的bug。
  • 在jest.config.js中配置coveragePathIgnorePatterns,排除新增路径下不需要生成覆盖率的文件,观察崩溃问题是否消失。

内容的提问来源于stack exchange,提问作者Caio Vinícius

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:19:59