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

求Jest + React + TypeScript可用的默认配置示例

完美运行的 Jest + React + TypeScript 配置示例

首先,你的现有配置确实遗漏了几个关键部分——比如React测试必需的DOM环境、更严谨的模块路径映射,还有TypeScript测试的类型支持优化。下面是一个经过生产环境验证的完整配置,我会逐一拆解每个项的作用:

完整的 jest.config.js

module.exports = {
  // 指定测试文件的根目录
  roots: ['<rootDir>/src'],

  // 转换规则:处理TS/TSX文件和静态资源
  transform: {
    '^.+\\.tsx?$': 'ts-jest',
    '^.+\\.(css|styl|less|sass|scss|png|jpg|jpeg|gif|svg|ttf|woff|woff2)$': 'jest-transform-stub',
  },

  // 测试文件匹配规则
  testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$',

  // 支持的文件扩展名
  moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],

  // React测试需要的DOM环境(关键!你的配置里缺这个)
  testEnvironment: 'jsdom',

  // 模块路径映射:处理别名(比如@/components)
  moduleNameMapper: {
    '^@/(.*)$': '<rootDir>/src/$1',
    '\\.(css|less|scss|sass)$': 'jest-transform-stub',
  },

  // 忽略不需要转换的第三方库
  transformIgnorePatterns: ['/node_modules/(?!(axios|some-esm-library)/)'],

  // Enzyme快照序列化器
  snapshotSerializers: ['enzyme-to-json/serializer'],

  // 测试前的初始化文件(用<rootDir>确保路径正确)
  setupFilesAfterEnv: ['<rootDir>/src/setupTests/enzymeConfig.ts'],

  // 覆盖率报告配置(可选但实用)
  collectCoverageFrom: [
    'src/**/*.{ts,tsx}',
    '!src/**/*.d.ts',
    '!src/index.tsx',
    '!src/serviceWorker.ts',
  ],
  coverageDirectory: '<rootDir>/coverage',
  coverageReporters: ['html', 'text-summary', 'lcov'],
};

关键补充项解释

  • testEnvironment: 'jsdom':React是基于浏览器DOM的,Jest默认用Node环境,必须显式指定jsdom才能模拟浏览器环境,否则会报document is undefined之类的错误。
  • moduleNameMapper:不仅处理静态资源,还支持路径别名(比如把@/components/Button映射到src/components/Button),让测试文件的导入更简洁。
  • transformIgnorePatterns:避免转换某些第三方ES模块,防止测试时出现语法错误。
  • collectCoverageFrom等覆盖率配置:帮你快速查看代码测试覆盖率,优化测试用例。

配套依赖安装

确保你安装了所有必需的依赖:

npm install --save-dev jest ts-jest @types/jest jest-environment-jsdom enzyme @types/enzyme enzyme-adapter-react-16 enzyme-to-json jest-transform-stub

(注:enzyme-adapter-react-16要对应你的React版本,比如React 17用@wojtekmaj/enzyme-adapter-react-17)

配套初始化文件:enzymeConfig.ts

放在src/setupTests/enzymeConfig.ts(路径要和setupFilesAfterEnv对应):

import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16'; // 对应你的React版本

configure({ adapter: new Adapter() });

TypeScript测试配置:tsconfig.test.json

在项目根目录创建这个文件,专门用于测试环境的TypeScript配置:

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "jsx": "react-jsx",
    "module": "CommonJS",
    "target": "ES5",
    "esModuleInterop": true,
    "allowJs": true
  },
  "include": ["src/**/*", "__tests__/**/*"]
}

运行测试脚本

在package.json里添加测试命令:

{
  "scripts": {
    "test": "jest",
    "test:watch": "jest --watch",
    "test:coverage": "jest --coverage"
  }
}

这样配置后,你的Jest测试就能完美支持React + TypeScript,解决之前可能遇到的环境错误、路径问题和类型支持不足的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:21:01