5장. 실제 DB integration test가 잡는 것
ORM mock은 SQL, constraint, 격리, migration, encoding을 검증하지 못한다. Testcontainers 등으로 운영과 같은 major version DB를 띄우고 migration을 처음부터 적용한다. 테스트마다 transaction rollback만 쓰면 commit 이후 outbox 동작을 놓칠 수 있으므로 시나리오별 초기화 전략을 둔다.
docker run --rm -e POSTGRES_PASSWORD=test -p 55432:5432 postgres:18
npm run migrate:test
npm run test:integration
동시 connection 두 개로 race를 실제 재현하고 affected rows와 최종 불변식을 검증한다. 테스트 종료 때 열린 connection과 container가 남지 않아야 한다.