NEST UNIT TEST
Nest 단위 테스트 분기 검증
테스트가 중요하다는 설명만으로는 Nest 코드를 검증할 수 없다.
TestingModule에서 provider를 구성하고, repository나 외부 API를
mock으로 대체하며, 성공·실패·예외 분기를 서비스 단위로 확인해야
한다.
대상 경계
controller, service, guard 중 하나를 테스트 단위로 고른다
→
대체 전략
repository, DB, 외부 API는 mock 또는 test DB로 분리한다
→
분기 증명
success, not found, validation, exception 경로를 빠짐없이
확인한다
01
대상 경계 선택
컨트롤러, 서비스, 가드 중 하나를 테스트 단위로 고르고 외부
의존성을 표시한다.
한 테스트가 너무 많은 계층을 지나지 않게 한다
02
TestingModule 구성
필요한 provider만 등록하고 DB, HTTP client, queue는 mock
provider로 바꾼다.
실제 DB가 필요하면 통합 테스트다
03
Mock 동작 지정
repository.findOne 성공, null, throw 같은 분기를 테스트마다
명시한다.
mock 기본값에 기대지 않는다
04
결과와 호출 검증
반환값뿐 아니라 의존성 호출 인자, 예외 타입, 로그 또는 이벤트
발행을 확인한다.
호출 계약도 테스트 대상이다
05
테스트 격리
각 테스트 뒤 mock 상태를 초기화하고 공유 상태가 다음 케이스에 새지
않게 한다.
순서 의존 테스트는 위험하다
Unit
한 클래스 분기
의존성을 mock으로 바꾸고 서비스 로직을 빠르게 검증한다.
많이, 빠르게 돌린다
Integration
모듈과 DB 연결
실제 repository나 테스트 DB로 여러 provider 조합을
확인한다.
속도와 격리를 관리한다
E2E
HTTP 경계
앱을 띄우고 요청부터 응답까지 라우팅, pipe, guard,
interceptor를 함께 본다.
핵심 흐름 위주로 둔다
Mock
외부 의존 대체
실패와 지연을 인위적으로 만들어 예외 흐름을 확인한다.
mock이 실제 계약과 너무 멀어지지 않게 한다
테스트 확인
실패 분기
없는 데이터, 권한 실패, 의존성 예외를 각각 테스트하는지
확인한다.
Provider 대체
실제 DB나 외부 API가 단위 테스트에서 호출되지 않는지
본다.
호출 인자
repository나 client가 기대한 조건으로 호출되는지
검증한다.