NestJS · E2E Test

E2E 테스트로 HTTP 경계 검증하기

NestJS E2E 테스트는 controller method를 직접 부르는 테스트가 아니라, 실제 app module을 띄워 HTTP 요청부터 응답까지 경계를 검증하는 테스트다.

01

앱 준비

테스트용 module과 config로 Nest application을 생성하고 init한다.

02

데이터 구성

각 테스트가 필요한 사용자, token, DB row를 독립적으로 준비한다.

03

HTTP 호출

실제 path, method, header, body로 요청을 보내 pipeline을 통과시킨다.

04

HTTP·DB side effect 확인

응답 status와 body뿐 아니라 DB 변경, audit log, side effect를 필요한 만큼 검증한다.

인증 흐름
인증 경계 토큰 없음, 만료, 권한 없음, 정상 접근을 모두 확인
UI 숨김과 별개
Validation
DTO 검증 잘못된 body가 400과 필드 오류로 반환
controller 단위보다 강함
DB
영속화 확인 생성·수정 요청 후 실제 데이터 상태를 확인
테스트 격리 필요
Cleanup
독립 실행 테스트 순서가 바뀌어도 결과 유지
transaction 또는 truncate

실제 경로 · 격리 · 실패 케이스 점검

실제 경로 controller method가 아니라 HTTP endpoint를 호출한다.
격리 테스트 데이터가 다른 테스트에 새지 않는다.
실패 케이스 정상 요청만 있고 권한·검증 실패가 빠지지 않는다.
종료 테스트 후 app과 DB 연결을 닫는다.