jest.config.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. /** @type {import('jest').Config} */
  2. const config = {
  3. preset: 'ts-jest',
  4. testEnvironment: 'node',
  5. // 测试文件匹配模式
  6. testMatch: [
  7. '**/__tests__/**/*.test.[jt]s?(x)',
  8. '**/?(*.)+(spec|test).[jt]s?(x)'
  9. ],
  10. // 模块名称映射
  11. moduleNameMapping: {
  12. '^@/(.*)$': '<rootDir>/src/$1',
  13. '^@/client/(.*)$': '<rootDir>/src/client/$1',
  14. '^@/server/(.*)$': '<rootDir>/src/server/$1',
  15. '^@/shared/(.*)$': '<rootDir>/src/shared/$1',
  16. '^@/test/(.*)$': '<rootDir>/test/$1'
  17. },
  18. // 覆盖率配置
  19. collectCoverageFrom: [
  20. 'src/**/*.{js,jsx,ts,tsx}',
  21. '!src/**/*.d.ts',
  22. '!src/client/api.ts',
  23. '!src/**/__tests__/**',
  24. '!src/**/__mocks__/**',
  25. '!src/**/index.ts',
  26. '!src/**/types.ts'
  27. ],
  28. coverageDirectory: 'coverage',
  29. coverageReporters: ['text', 'lcov', 'html'],
  30. coverageThreshold: {
  31. global: {
  32. branches: 70,
  33. functions: 70,
  34. lines: 70,
  35. statements: 70
  36. }
  37. },
  38. // 测试超时
  39. testTimeout: 10000,
  40. // 测试环境设置
  41. setupFilesAfterEnv: ['<rootDir>/src/test/setup.ts'],
  42. // 变换配置
  43. transform: {
  44. '^.+\.[tj]sx?$': ['ts-jest', {
  45. tsconfig: 'tsconfig.json',
  46. useESM: true,
  47. }],
  48. },
  49. // 模块文件扩展名
  50. moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
  51. // 测试路径忽略模式
  52. testPathIgnorePatterns: [
  53. '/node_modules/',
  54. '/dist/',
  55. '/build/',
  56. '/coverage/'
  57. ],
  58. // 监听模式配置
  59. watchPathIgnorePatterns: [
  60. '/node_modules/',
  61. '/dist/',
  62. '/build/',
  63. '/coverage/'
  64. ],
  65. // 测试运行器显示配置
  66. verbose: true,
  67. notify: false,
  68. // CI环境配置
  69. maxWorkers: process.env.CI ? 2 : '50%',
  70. // 全局变量
  71. globals: {
  72. 'ts-jest': {
  73. isolatedModules: true
  74. }
  75. }
  76. };
  77. // 前端测试环境特殊配置
  78. if (process.env.TEST_ENV === 'ui') {
  79. config.testEnvironment = 'jsdom';
  80. config.setupFilesAfterEnv = [
  81. '<rootDir>/src/test/setup.ts',
  82. '@testing-library/jest-dom'
  83. ];
  84. }
  85. export default config;