데이터베이스를 사용하는 코드를 테스트하는 것은 까다롭습니다 — 불안정성이나 느림 없이 현실적인 데이터 동작이 필요합니다. 접근법으로는 테스트 데이터베이스, 인메모리 데이터베이스, 트랜잭션/롤백, 데이터 계층 mocking이 있으며, 각각 트레이드오프가 있습니다.
과제
데이터베이스와 상호작용하는 코드는 테스트가 필요하지만, 데이터베이스는 과제를 가져온다:
→ 실제 DB → 현실적이지만 더 느림; 셋업과 정리 필요 (테스트 간 상태)
→ 공유 상태 → 테스트가 서로 간섭 가능 (순서 의존, 불안정성)
→ DB mocking → 빠르지만 실제 쿼리/통합 버그를 못 잡을 수 있음
→ 현실성, 속도, 격리의 균형을 맞추는 접근법을 선택하라.
