| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- /** @type {import('jest').Config} */
- const config = {
- preset: 'ts-jest',
- testEnvironment: 'node',
- // 测试文件匹配模式
- testMatch: [
- '**/__tests__/**/*.test.[jt]s?(x)',
- '**/?(*.)+(spec|test).[jt]s?(x)'
- ],
- // 模块名称映射
- moduleNameMapping: {
- '^@/(.*)$': '<rootDir>/src/$1',
- '^@/client/(.*)$': '<rootDir>/src/client/$1',
- '^@/server/(.*)$': '<rootDir>/src/server/$1',
- '^@/shared/(.*)$': '<rootDir>/src/shared/$1',
- '^@/test/(.*)$': '<rootDir>/test/$1'
- },
- // 覆盖率配置
- collectCoverageFrom: [
- 'src/**/*.{js,jsx,ts,tsx}',
- '!src/**/*.d.ts',
- '!src/client/api.ts',
- '!src/**/__tests__/**',
- '!src/**/__mocks__/**',
- '!src/**/index.ts',
- '!src/**/types.ts'
- ],
- coverageDirectory: 'coverage',
- coverageReporters: ['text', 'lcov', 'html'],
- coverageThreshold: {
- global: {
- branches: 70,
- functions: 70,
- lines: 70,
- statements: 70
- }
- },
- // 测试超时
- testTimeout: 10000,
- // 测试环境设置
- setupFilesAfterEnv: ['<rootDir>/src/test/setup.ts'],
- // 变换配置
- transform: {
- '^.+\.[tj]sx?$': ['ts-jest', {
- tsconfig: 'tsconfig.json',
- useESM: true,
- }],
- },
- // 模块文件扩展名
- moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
- // 测试路径忽略模式
- testPathIgnorePatterns: [
- '/node_modules/',
- '/dist/',
- '/build/',
- '/coverage/'
- ],
- // 监听模式配置
- watchPathIgnorePatterns: [
- '/node_modules/',
- '/dist/',
- '/build/',
- '/coverage/'
- ],
- // 测试运行器显示配置
- verbose: true,
- notify: false,
- // CI环境配置
- maxWorkers: process.env.CI ? 2 : '50%',
- // 全局变量
- globals: {
- 'ts-jest': {
- isolatedModules: true
- }
- }
- };
- // 前端测试环境特殊配置
- if (process.env.TEST_ENV === 'ui') {
- config.testEnvironment = 'jsdom';
- config.setupFilesAfterEnv = [
- '<rootDir>/src/test/setup.ts',
- '@testing-library/jest-dom'
- ];
- }
- export default config;
|