Controller unit test

컨트롤러 테스트는 위임 계약을 좁게 확인한다

HTTP 서버를 띄우기 전에 컨트롤러 메서드를 직접 호출하고, 서비스 mock이 기대한 값과 인자로 사용됐는지 확인한다.

target AppController
double AppService mock
assert return value + call

TestingModule 구성 순서

no HTTP server
1

컨트롤러 등록

controllers에 테스트 대상만 올린다.

2

서비스 대체

providers에서 AppService를 mock으로 주입한다.

3

메서드 호출

getHello(), sumNumbers()를 직접 실행한다.

4

위임 검증

반환값과 서비스 호출 횟수, 호출 인자를 함께 본다.

확인함

메서드 반환

컨트롤러가 서비스 결과를 응답 형태로 돌려주는지 본다.

확인함

서비스 호출 계약

DTO에서 꺼낸 값이 서비스에 올바르게 전달되는지 본다.

분리함

라우팅과 파이프

실제 HTTP, guard, pipe는 E2E 테스트에서 다시 확인한다.

테스트
입력
기대 결과
mock 관찰
GET hello
인자 없음
mock 문자열 반환
getHello 1회 호출
POST sum
{ a, b }
계산 결과 반환
sum(a, b) 호출