Skip to main content
Sonamu의 테스트 데이터베이스 시스템과 설정 방법을 알아봅니다.

테스트 DB 개요

격리된 환경

프로덕션과 분리 안전한 테스트

자동 롤백

Transaction 기반 테스트 후 자동 정리

Fixture 지원

실제 데이터 복사 일관된 테스트 환경

간편한 초기화

한 명령어로 설정 스키마 자동 복사

DB 구조

Sonamu는 여러 데이터베이스를 사용합니다: 역할:
  • development: 개발 중 사용하는 DB
  • fixture: 테스트에 사용할 공통 데이터 저장 (팀 공유 가능)
  • test: 실제 테스트가 실행되는 DB (Transaction 기반)

DB 설정

sonamu.config.json

주의:
  • testproduction절대 같은 DB를 사용하면 안 됩니다
  • Sonamu가 초기화 시 자동으로 검증합니다

Fixture 초기화

pnpm sonamu fixture init

개발 DB의 스키마를 Fixture DB와 Test DB로 복사합니다.
작동 과정:
  1. Development DB 덤프
  2. Fixture DB 생성
  3. Test DB 생성
결과:
  • Fixture DB: 빈 스키마 (나중에 데이터 추가)
  • Test DB: 빈 스키마 (테스트마다 Fixture에서 동기화)

실행 예시

스킵 조건

Fixture DB와 Test DB가 동일한 경우 Test DB 생성을 스킵합니다:

테스트 DB 작동 원리

Transaction 기반

각 테스트는 독립된 Transaction에서 실행됩니다:
흐름:

장점

격리성:
빠른 실행:
  • 실제 DELETE 없음 → ROLLBACK만
  • DB 정리 시간 절약

베스트 프랙티스

1. DB 분리

2. Fixture DB 공유

팀 전체가 동일한 Fixture DB를 사용하면 일관된 테스트 환경을 유지할 수 있습니다:

3. 정기적인 초기화

스키마가 변경되면 Fixture를 다시 초기화해야 합니다:

문제 해결

연결 실패

해결:
  • PostgreSQL 서버가 실행 중인지 확인
  • sonamu.config.json의 연결 정보 확인

권한 오류

해결:

DB 이미 존재

해결:

주의사항

테스트 DB 사용 시 주의사항: 1. 프로덕션 DB 절대 금지: test DB는 프로덕션과 완전히 분리 2. 스키마 동기화: 마이그레이션 후 fixture init 실행 3. Transaction 기반: 테스트 간 격리는 자동 처리 4. Fixture 공유: 팀원과 동일한 Fixture DB 사용 권장 5. 정기적인 초기화: 개발 DB 스키마 변경 시 재초기화

다음 단계

Fixture 생성

fixture.ts 작성하기

Fixture 로딩

프로덕션 데이터 가져오기

Fixture 동기화

Fixture → Test DB

테스트 작성

테스트 구조 이해하기