当前位置: 首页 > news >正文

使用ts-jest进行TypeScript的单元测试配置

文章目录

      • 步骤 1: 安装必要依赖
      • 步骤 2: 初始化 Jest 配置文件
      • 步骤 3: 配置 Jest (jest.config.js)
      • 步骤 4: 配置 TypeScript (tsconfig.json)
      • 步骤 5: 配置 package.json 脚本
      • 步骤 6: 创建测试文件
      • 步骤 7: 运行测试
      • 常见问题及解决

使用 ts-jest 配置 TypeScript 单元测试是一个常见且高效的方案,它能让 Jest 直接处理 TypeScript 代码。以下是详细的配置步骤:

步骤 1: 安装必要依赖

首先需要安装核心依赖包:

# 安装 Jest 核心和 ts-jest 转换器
npm install --save-dev jest ts-jest @types/jest# 确保已安装 TypeScript(如果项目中还没有)
npm install --save-dev typescript

步骤 2: 初始化 Jest 配置文件

可以通过命令自动生成配置文件:

npx ts-jest config:init

这会创建一个 jest.config.js 文件,包含基本配置。

步骤 3: 配置 Jest (jest.config.js)

生成的配置文件可以根据需要修改,典型配置如下:

/** @type {import('ts-jest').JestConfigWithTsJest} */
module.exports = {// 使用 ts-jest 预设preset: 'ts-jest',// 测试环境:node 或 jsdom(浏览器环境模拟)testEnvironment: 'node',// 文件扩展名处理moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],// 测试文件匹配模式testMatch: ['**/*.test.(ts|tsx)'],// 转换器配置transform: {'^.+\\.(ts|tsx)$': ['ts-jest',{// TypeScript 配置文件路径tsconfig: 'tsconfig.json',// 可选:启用隔离模块模式isolatedModules: true,},],},// 模块名称映射(处理路径别名)moduleNameMapper: {'^@/(.*)$': '<rootDir>/src/$1',},// 忽略某些文件testPathIgnorePatterns: ['/node_modules/', '/dist/'],// 覆盖率报告配置collectCoverageFrom: ['src/**/*.{ts,tsx}','!src/**/*.d.ts','!**/node_modules/**',],coverageDirectory: 'coverage',coverageReporters: ['text', 'lcov'],
};

步骤 4: 配置 TypeScript (tsconfig.json)

确保 TypeScript 配置支持测试环境,典型配置:

{"compilerOptions": {"target": "ES2020","module": "CommonJS","outDir": "./dist","rootDir": "./src","strict": true,"esModuleInterop": true,"skipLibCheck": true,"forceConsistentCasingInFileNames": true,// 允许 Jest 识别测试文件中的类型"types": ["jest"]},"include": ["src/**/*", "tests/**/*"],"exclude": ["node_modules", "dist"]
}

步骤 5: 配置 package.json 脚本

package.json 中添加测试脚本:

{"scripts": {"test": "jest",                      // 运行所有测试"test:watch": "jest --watch",        // 监视模式,自动重新运行测试"test:coverage": "jest --coverage",  // 生成覆盖率报告"test:ci": "jest --ci --coverage"    // CI 环境使用}
}

步骤 6: 创建测试文件

测试文件通常与被测试文件放在同一目录,命名格式为 [文件名].test.ts

例如,测试 src/utils/math.ts

// src/utils/math.ts
export const sum = (a: number, b: number): number => a + b;

对应的测试文件:

// src/utils/math.test.ts
import { sum } from './math';describe('sum function', () => {it('should return the sum of two numbers', () => {expect(sum(2, 3)).toBe(5);expect(sum(-1, 1)).toBe(0);});
});

步骤 7: 运行测试

使用以下命令运行测试:

# 运行所有测试
npm test# 运行测试并监视文件变化
npm run test:watch# 生成覆盖率报告
npm run test:coverage

常见问题及解决

  1. 路径别名问题:如果在 TypeScript 中使用了路径别名(如 @/utils),需要在 jest.config.jsmoduleNameMapper 中同步配置。

  2. 类型定义问题:确保安装了 @types/jest 并在 tsconfig.jsontypes 中包含 jest

  3. 测试环境选择

    • 后端项目通常用 testEnvironment: 'node'
    • 前端项目通常用 testEnvironment: 'jsdom'(需要安装 jsdom 包)

通过以上配置,你就可以在 TypeScript 项目中使用 ts-jest 进行高效的单元测试了。这种配置既保留了 TypeScript 的类型检查优势,又能利用 Jest 强大的测试功能。

http://www.dtcms.com/a/465558.html

相关文章:

  • 108、23种设计模式之模板方法模式(17/23)
  • React 19.2.0: 新特性与优化深度解析
  • {【MySQL】深入解析InnoDB存储引擎的MVCC机制与实现原理}
  • 吉安哪家做网站的公司好html简单网站成品免费
  • 以太网PHY芯片全面解析:物理层核心、单多口设计与实战选型
  • 微网站怎么制作网站建设 起飞
  • Docker镜像仓库全方位使用指南
  • 做网站网络合同上海网站建设网站开发
  • Deep Neural Networks for YouTube Recommendation
  • Vue支持预览 docx格式,xlsx格式,pdf格式的文件
  • 海南工程建设资料备案网站抖音开放平台官网入口
  • WHAT - requestIdleCallback 介绍
  • ShadowDiffusion算法解决阴影去除问题
  • AWS CLI自动删除资源脚本
  • 嵌入式学习linux内核驱动6——dts和GPIO子系统
  • 企业网站推广哪家公司好揭阳做网站公司
  • 宿州做网站的公司有哪些广州自助公司建网站
  • 星巴克APP逆向
  • [Dify] 知识库在 Agent 模式中的应用策略:让智能体更懂知识、更懂业务
  • 精通C语言(4.四种动态内存有关函数)
  • 【实用工具】使用Python语言制作RSS阅读器
  • 动态规划 - 二维费用的背包问题、似包非包、卡特兰数
  • JAVA·方法的使用
  • 做rap的网站国内做网站网站风险大吗
  • 【代码随想录算法训练营——Day33】动态规划——62.不同路径、63.不同路径II、343.整数拆分、96.不同的二叉搜索树
  • 基于单片机的元胞自动机仿真系统设计
  • 星座运势网站技术解析:从零打造现代化Web应用
  • Asp.net core 跨域配置
  • Java学习之旅第二季-18:转型
  • 建筑物孪生模型:重构空间数字化格局,赋能智慧城市