E2E 경계

E2E는 실제 모듈 위에 테스트 전용 경계를 세운다

데이터베이스는 실제 연결에 가깝게 두고, 이메일 같은 외부 서비스는 `overrideProvider()`로 고정하면 요청 흐름을 안정적으로 검증할 수 있다.

테스트 수명주기

Jest + Supertest
1

beforeAll 준비

테스트 DB나 컨테이너를 띄우고 AppModule을 컴파일한다.

2

프로바이더 고정

제어하기 어려운 EmailService는 목으로 바꿔 외부 호출을 막는다.

3

요청 검증

Supertest가 실제 HTTP 서버에 요청하고 상태 코드와 본문을 확인한다.

4

E2E 정리

테이블 초기화, 목 호출 기록 삭제, `app.close()`로 리소스를 닫는다.

실제에 가깝게

DB 연결과 리포지토리

쿼리, 트랜잭션, 모듈 wiring이 함께 작동하는지 확인한다.

목으로 고정

외부 API와 알림

비용, 지연, 네트워크 실패가 테스트 결과를 흔들지 않게 한다.

항상 정리

시드와 클린업

각 테스트가 같은 시작 상태를 가지도록 데이터를 되돌린다.