테스트 DB 개요
격리된 환경
프로덕션과 분리안전한 테스트
자동 롤백
Transaction 기반테스트 후 자동 정리
Fixture 지원
실제 데이터 복사일관된 테스트 환경
간편한 초기화
한 명령어로 설정스키마 자동 복사
DB 구조
Sonamu는 여러 데이터베이스를 사용합니다:- development_master: 개발 중 사용하는 DB
- fixture: 테스트에 사용할 공통 데이터 저장 (팀 공유 가능)
- test: 실제 테스트가 실행되는 DB (Transaction 기반)
DB 설정
sonamu.config.json
test와production_master는 절대 같은 DB를 사용하면 안 됩니다- Sonamu가 초기화 시 자동으로 검증합니다
Fixture 초기화
pnpm sonamu fixture init
개발 DB의 스키마를 Fixture DB와 Test DB로 복사합니다.-
Development DB 덤프
-
Fixture DB 생성
-
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의 연결 정보 확인