Jest 테스트 설정

TypeScript 프로젝트를 위한 종합적인 Jest 설정입니다. 경로 별칭(path alias), 커버리지 리포트, 커스텀 매처(matcher) 설정을 포함합니다.

Gist
/** @type {import('jest').Config} */
module.exports = {
  // TypeScript 파일 처리를 위한 ts-jest 설정
  preset: 'ts-jest',
  testEnvironment: 'node',

  // 테스트 파일 패턴
  testMatch: ['**/__tests__/**/*.ts', '**/?(*.)+(spec|test).ts'],

  // 경로 별칭(Alias) 해결 (tsconfig.json의 paths와 동기화 필요)
  moduleNameMapper: {
    '^@/(.*)$': '<rootDir>/src/$1',
    '^@config/(.*)$': '<rootDir>/src/config/$1',
  },

  // 테스트 실행 전 초기화 코드 (커스텀 매처 등)
  setupFilesAfterEnv: ['<rootDir>/jest.setup.ts'],

  // 코드 커버리지 설정
  collectCoverage: true,
  collectCoverageFrom: [
    'src/**/*.ts',
    '!src/**/*.d.ts',
    '!src/main.ts',
    '!src/db/migrations/**',
  ],
  coverageDirectory: 'coverage',
  coverageReporters: ['text', 'lcov', 'cobertura'],

  // 커버리지 임계값 (필요시 설정)
  coverageThreshold: {
    global: {
      branches: 80,
      functions: 80,
      lines: 80,
      statements: 80,
    },
  },

  // 자세한 출력 설정
  verbose: true,

  // 특정 디렉토리 무시
  testPathIgnorePatterns: ['/node_modules/', '/dist/'],
};