使用ts-jest进行TypeScript单元测试指南
1. 项目目录结构及介绍
在ts-jest
项目中,典型的目录结构可能包括以下几个关键部分:
.
├── src # 源代码目录
│ ├── index.ts # 主入口文件
├── tests # 测试用例目录
│ ├── __mocks__ # 自定义模拟文件
│ └── example.test.ts # 示例测试文件
├── jest.config.js # Jest配置文件
└── package.json # 项目依赖和脚本
src
: 存放源代码的主目录。tests
: 所有测试文件所在的地方,通常以.test.ts
或.spec.ts
为后缀。__mocks__
: Jest允许在这里创建自定义模块模拟,用于替换被测试模块的部分功能。jest.config.js
: Jest配置文件,定制Jest的行为。package.json
: 包含项目的元数据,如依赖项和运行时脚本。
2. 项目的启动文件介绍
在ts-jest
项目中,启动文件通常是通过package.json
中的脚本来调用的。例如:
{
"scripts": {
"test": "jest"
}
}
在这个例子中,使用npm test
或yarn test
命令将运行Jest,执行所有的测试。
3. 项目的配置文件介绍
jest.config.js
是Jest的配置文件,用于指定不同设置,如测试路径、预设、覆盖范围等。以下是一个基本的配置示例:
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node', // 可选择其他环境,如jsdom for browser-like tests
roots: ['<rootDir>/src'], // 指定查找源码的根目录
extensionsToTreatAsEsm: ['.ts', '.tsx'], // 处理为ESM模块的扩展名
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
transform: {
'^.+\\.(ts|tsx)$': 'ts-jest' // 配置ts-jest转译器
},
coverageDirectory: '<rootDir>/coverage', // 覆盖率报告存放位置
collectCoverageFrom: ['**/*.{ts,tsx}', '!**/*.d.ts'] // 指定覆盖率收集规则
};
preset
:预设值,ts-jest
的预设确保了对TypeScript的支持。testEnvironment
:测试环境,可以是'node'
(Node.js)或其他环境,如浏览器模拟器'jsdom'
。roots
:根目录列表,Jest会在这些目录里寻找被测试的模块。extensionsToTreatAsEsm
:将指定扩展视为ESM(ECMAScript模块)。moduleFileExtensions
:模块可使用的文件扩展名列表。transform
:转换规则,指定哪些文件类型由哪个转译器处理。coverageDirectory
:覆盖率报告的输出目录。collectCoverageFrom
:覆盖率搜集的文件模式,排除不需要计算覆盖率的文件。
有了以上配置,你可以愉快地使用ts-jest
进行TypeScript项目的单元测试了。记得根据你的实际需求调整配置哦!