Skip to content

Conversation

@KimGiii
Copy link
Contributor

@KimGiii KimGiii commented Jun 27, 2025

📌 연관된 이슈 번호

🌱 주요 변경 사항

1. ETF 추천 서비스 테스트 구현 (__tests__/services/etf-recommend-service.test.ts)

  • EtfRecommendService 클래스 전체 테스트 커버리지

    • getRecommendations() 메서드 테스트
    • getEtfData() 메서드 테스트
    • processEtfData() 메서드 테스트
    • calculateMetrics() 메서드 테스트
    • calculateEtfScores() 메서드 테스트
  • 에러 케이스 테스트

    • 투자 성향이 없는 경우 (InvestmentProfileNotFoundError)
    • ETF 데이터가 없는 경우 (NoEtfDataError)
    • 거래 데이터가 있는 ETF가 없는 경우 (NoTradingDataError)
  • 투자 성향별 필터링 테스트

    • 보수적 투자자는 저위험 ETF만 추천받는지 검증
    • 위험등급별 필터링 로직 검증

2. API 엔드포인트 테스트 (__tests__/api/etf-recommend-api.test.ts)

  • 인증 테스트

    • 인증되지 않은 사용자 접근 차단
    • 세션에 사용자 ID가 없는 경우 처리
  • 서비스 로직 테스트

    • 각종 에러 상황에 대한 적절한 HTTP 상태 코드 반환
    • 성공적인 ETF 추천 결과 반환 검증
  • 에러 처리 테스트

    • 데이터베이스 오류, 서비스 오류 등 다양한 예외 상황 처리

3. 유틸리티 함수 테스트

  • 위험등급 분류 함수 (classifyRiskGrade)

    • 변동성에 따른 5단계 위험등급 분류 검증
  • 샤프비율 계산 함수 (calculateSharpeRatio)

    • 정확한 샤프비율 계산 및 예외 상황 처리
  • 투자 성향별 가중치 함수 (getRiskBasedWeights)

    • 5가지 투자 성향별 차별화된 가중치 적용
  • 허용 위험등급 함수 (getAllowedRiskGrades)

    • 투자 성향별 허용 위험등급 필터링
  • 정규화 함수들 (normalize, normalizeVolatilityByRiskGrade)

    • 데이터 정규화 로직 검증
  • 추천 이유 생성 함수 (generateReasons)

    • ETF 특성에 따른 맞춤형 추천 이유 생성

4. 테스트 헬퍼 함수 구현 (__tests__/helpers/etf-recommend-helpers.ts)

  • Mock 데이터 생성 함수들

    • createMockEtfData(): ETF 데이터 모킹
    • createMockProcessedEtfData(): 처리된 ETF 데이터 모킹
    • createMockMetricsData(): 메트릭 데이터 모킹
    • createMockWeightsData(): 가중치 데이터 모킹
    • createMockEtfRecommendationResponse(): 추천 응답 모킹
  • 투자 성향별 테스트 데이터

    • createConservativeEtfData(): 보수형 ETF 데이터
    • createAggressiveEtfData(): 공격형 ETF 데이터
    • getTestRiskGradesByInvestType(): 투자 성향별 허용 위험등급

🎯 주요 개선사항

1. 테스트 커버리지 확대

  • ETF 추천 서비스의 모든 핵심 로직에 대한 단위 테스트 구현
  • API 엔드포인트에 대한 통합 테스트 구현
  • 에러 상황과 예외 케이스에 대한 포괄적 테스트

2. 테스트 가독성 향상

  • Given-When-Then 패턴을 사용한 명확한 테스트 구조
  • 한글로 작성된 테스트 설명으로 이해도 증대
  • Mock 데이터 헬퍼 함수로 테스트 코드 재사용성 향상

테스트 결과

  • 총 테스트 파일: 3개 (서비스, API, 헬퍼)
  • 총 테스트 케이스: 50+ 개
  • 테스트 커버리지: ETF 추천 서비스 핵심 로직 100% 커버
  • 에러 케이스: 모든 주요 예외 상황 테스트 완료

📸 스크린샷 (선택)

image image

KimGiii added 4 commits June 27, 2025 15:07
…mmend-test

# Conflicts:
#	app/(routes)/(auth)/register/_components/register-form.tsx
#	app/(routes)/guide/_components/guide-page-container.tsx
#	app/(routes)/guide/_components/slider-wrapper.tsx
#	app/(routes)/guide/data/video-data.ts
#	app/(routes)/guide/shorts-viewer/[category]/[id]/page.tsx
#	app/(routes)/guide/shorts-viewer/[category]/_components/shorts-viewer-container.tsx
#	app/(routes)/guide/shorts-viewer/[category]/page.tsx
#	components/guide/video-preview.tsx
@KimGiii KimGiii linked an issue Jun 27, 2025 that may be closed by this pull request
@KimGiii KimGiii self-assigned this Jun 27, 2025
@dbstj0403 dbstj0403 merged commit 9c8765f into develop Jun 28, 2025
1 check passed
@dbstj0403 dbstj0403 deleted the feat/#185-etf-recommend-test branch June 28, 2025 07:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[ Feat ] ETF 추천 테스트코드

6 participants