Skip to main content
Sonamu의 Fixture 시스템을 사용하여 테스트 데이터를 효율적으로 관리하는 방법을 알아봅니다.

테스트 헬퍼 개요

Fixture Loader

테스트 데이터 재사용 타입 안전한 로딩

Fixture Manager

DB 간 데이터 복사 관계 자동 처리

간편한 설정

한 번 정의 여러 테스트 공유

자동 정리

Transaction 기반 자동 롤백

Fixture Loader

createFixtureLoader

테스트에서 사용할 fixture를 미리 정의하고 필요할 때 로드합니다.

테스트에서 사용하기

장점

타입 안전성:
재사용성:
선택적 로딩:

복잡한 Fixture 패턴

관계가 있는 Fixtures

동적 Fixtures

Fixture Manager

개요

FixtureManager는 프로덕션 DB의 실제 데이터를 테스트 DB로 복사하는 기능을 제공합니다. 주요 기능:
  • 프로덕션 → Fixture DB 데이터 추출
  • Fixture DB → 테스트 DB 동기화
  • 관계 자동 해결 (BelongsTo, HasMany, ManyToMany)
  • 중복 데이터 처리

DB sync

Fixture DB의 데이터를 테스트 DB로 동기화합니다.
실행 과정:
  1. 테스트 DB 초기화 (기존 데이터 삭제)
  2. Fixture DB 덤프 (pg_dump)
  3. 테스트 DB 복원 (pg_restore)

importFixture

프로덕션 DB의 특정 데이터를 Fixture DB로 가져옵니다.
자동 관계 해결:

실전 예제

기본 Fixture 패턴

복잡한 시나리오

베스트 프랙티스

1. Fixture 이름 규칙

2. 최소한의 데이터

3. Fixture 재사용

에러 처리

Fixture 로딩 중 에러가 발생할 수 있습니다. 적절한 에러 처리로 테스트를 안정적으로 작성하세요.

기본 에러 처리

Fixture 생성 실패 처리

타임아웃 설정

Fixture 로딩이 오래 걸리는 경우 타임아웃을 설정할 수 있습니다.

조건부 Fixture 로딩

환경에 따라 다른 fixture를 로드할 수 있습니다.

에러 복구 전략

에러 처리 Best Practice: - Fixture 생성 실패 시 명확한 에러 메시지 제공 - 의존성 있는 fixture는 각 단계별로 에러 처리 - 타임아웃 설정으로 무한 대기 방지 - 재시도 로직은 신중하게 사용 (DB 상태 일관성 고려) - 에러 로깅으로 디버깅 용이성 확보

주의사항

Fixture 사용 시 주의사항: 1. Transaction 기반: 각 테스트마다 자동 롤백됨 2. 최소 데이터: 테스트에 필요한 최소한의 데이터만 생성 3. 독립성: 각 테스트는 독립적으로 실행되어야 함 4. 타입 안전: createFixtureLoader로 타입 안전성 보장 5. 명확한 이름: fixture 이름은 용도를 명확하게 표현 6. 에러 처리: Fixture 로딩 실패에 대비한 에러 처리 필수

다음 단계

테스트 구조

bootstrap, test, testAs

테스트 Scaffolding

자동 테스트 생성

Model System

Model 이해하기

Vitest 공식 문서

Vitest 가이드