什么是.spec.ts文件?为何TypeScript测试普遍使用该文件后缀?
关于TypeScript项目
.spec.ts测试文件后缀的常见疑问解答 .spec.ts是目前TypeScript生态约定俗成的测试文件命名规范,普及度很高的原因主要有3个:
- 约定认知统一
spec是*specification(规范)*的缩写,这个命名习惯源自早期行为驱动开发(BDD)的工程实践:测试文件本质是对源代码功能预期的可执行规范,每一条测试用例对应一条功能必须满足的规则。所有开发者看到.spec.ts后缀不需要打开文件,就能直接判断这是对应业务代码的测试文件,不会和普通业务逻辑文件混淆。 - 工具链默认适配
主流TS生态工具都默认适配这个后缀规则,不需要额外修改配置就能正常工作:- Jest、Vitest、Mocha、Cypress等测试框架的默认配置,都会自动扫描所有
.spec.ts后缀的文件作为测试入口,直接执行测试命令就能跑全量用例。 - Vite、Rollup、Webpack等打包工具的生产构建规则,默认会过滤掉
.spec.ts后缀的文件,避免测试代码被打包到生产环境,减少产物体积同时降低线上故障风险。
- Jest、Vitest、Mocha、Cypress等测试框架的默认配置,都会自动扫描所有
- 文件结构辨识度高
目前TS项目的通用文件组织逻辑有两种:测试文件和对应业务代码同目录存放(比如src/utils/format.ts旁边放src/utils/format.spec.ts),或者测试文件集中存放在test目录下,保持和源码完全一致的目录结构。.spec.ts后缀可以让开发者快速区分同功能的业务文件和测试文件,排查问题、补充用例时都能快速定位目标文件。
另外补充一个常见疑问:部分项目也会使用.test.ts作为测试后缀,两者功能层面没有任何差异,只是命名侧重不同:.spec更强调测试作为功能规范的属性,.test更强调测试作为功能验证动作的属性,目前两类后缀都被所有主流工具支持,只是.spec.ts在TS项目中的普及度更高。
内容的提问来源于stack exchange,提问作者Patrick Collins
相关产品推荐
相关产品推荐

