/** * Jest 설정 파일 * * TK-FB-Project 테스트 환경 설정 */ module.exports = { // Node.js 환경에서 테스트 실행 testEnvironment: 'node', // 커버리지 리포트 저장 디렉토리 coverageDirectory: 'coverage', // 커버리지 수집 대상 파일 collectCoverageFrom: [ 'controllers/**/*.js', 'services/**/*.js', 'models/**/*.js', 'middlewares/**/*.js', 'utils/**/*.js', '!**/node_modules/**', '!**/coverage/**', '!**/tests/**', '!index.js' // 서버 시작 파일 제외 ], // 테스트 파일 패턴 testMatch: [ '**/tests/**/*.test.js', '**/tests/**/*.spec.js' ], // 테스트 실행 전 설정 파일 setupFilesAfterEnv: ['/tests/setup.js'], // 상세 출력 모드 verbose: true, // 커버리지 수집 활성화 collectCoverage: false, // 기본은 false, npm run test:coverage에서만 true // 커버리지 리포트 형식 coverageReporters: ['text', 'lcov', 'html', 'json-summary'], // 커버리지 임계값 (이 값 이하면 테스트 실패) coverageThreshold: { global: { branches: 50, functions: 50, lines: 50, statements: 50 } }, // 테스트 타임아웃 (밀리초) testTimeout: 10000, // 모듈 경로 매핑 (선택사항) moduleNameMapper: { '^@/(.*)$': '/$1', '^@controllers/(.*)$': '/controllers/$1', '^@services/(.*)$': '/services/$1', '^@models/(.*)$': '/models/$1', '^@utils/(.*)$': '/utils/$1', '^@middlewares/(.*)$': '/middlewares/$1' }, // 무시할 경로 testPathIgnorePatterns: [ '/node_modules/', '/coverage/', '/dist/' ], // 병렬 테스트 실행 워커 수 (기본값: CPU 코어 수 - 1) // maxWorkers: 4, // 실패한 테스트만 재실행 옵션 // bail: 1, // 첫 번째 실패 시 중단 // 테스트 결과 리포터 reporters: [ 'default', // ['jest-junit', { outputDirectory: 'coverage', outputName: 'junit.xml' }] ], // 글로벌 설정 globals: { 'NODE_ENV': 'test' } };