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

Jest测试是否应该包含/dist/目录下的测试文件?

TypeScript项目测试文件编译与Jest执行配置问题解答

要不要将*.test.ts加入tsconfig.json的排除规则?

绝大多数场景下都建议将测试文件加入排除规则,仅极少数特殊场景不需要排除:

  • 你开发的是测试工具类库,需要将测试相关的工具函数、预置用例等代码作为包产物的一部分对外发布
  • 项目有特殊的全量编译校验流程,要求所有TS文件(包括测试)都经过编译环节做语法、类型的合规校验

除此之外都建议排除,理由如下:

  • 减少不必要的编译耗时,测试代码不需要上线,编译属于无效资源消耗
  • 避免dist目录混入非业务代码,减少生产部署包体积,也避免后续自动化流程误将测试文件识别为业务代码处理
  • 从根源上避免你遇到的Jest同时识别到两份测试文件的问题

应该让Jest运行/src下的TS测试还是/dist下的JS测试?

日常开发流程优先跑/src下的TS测试,仅在特殊校验场景下才需要跑/dist下的JS测试。

日常跑TS测试的优势:

  • 配合ts-jest或者@swc/jest可以直接执行TS文件,不需要提前全量编译,修改代码后跑测试的反馈速度更快
  • 支持源码映射,断点调试时可以直接对应到TS源码,调试体验远优于编译后的JS文件
  • 不会出现源码修改后没重新编译,跑了旧版本测试得到错误结果的问题

仅在以下场景需要额外跑/dist下的JS测试:
你开发的是对外发布的npm类库,需要在发布前校验编译后的JS产物实际运行逻辑符合预期,这属于发布前的兼容性校验环节,需要单独配置独立的Jest执行规则,不要和日常开发的单元测试流程混用。


问题快速修复方案

  1. 调整tsconfig.json配置,排除测试文件:
{
  "exclude": ["node_modules", "dist", "**/*.test.ts", "**/*.spec.ts"]
}
  1. 调整Jest配置,避免扫描到dist目录的测试文件:
// jest.config.js
module.exports = {
  // 方式1:仅匹配src下的测试文件
  testMatch: ["<rootDir>/src/**/*.test.ts"],
  // 方式2:直接忽略dist目录
  modulePathIgnorePatterns: ["<rootDir>/dist/"]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:06:04