controllers, providers, imports, exports로 의존성 그래프를 만든다.
Module은 묶고, Controller는 받고, Provider는 처리한다
NestJS의 기본 구조는 요청 경계와 비즈니스 로직을 나누어 변경과 테스트 범위를 작게 만든다.
route decorator, DTO, pipe, status code를 정리하고 service를 호출한다.
service, repository, factory가 주입되어 비즈니스 로직을 수행한다.
| 순서 | 동작 | 맡는 구성 | 테스트에서 바꾸는 지점 |
|---|---|---|---|
| 01Route match | HTTP method와 path를 controller method에 매핑 | Controller | service mock으로 HTTP 경계 검증 |
| 02Service call | Controller는 얇게 남고 provider가 규칙 수행 | Provider | overrideProvider로 DB/캐시 대체 |
| 03Response | 반환 값이 interceptor/filter 정책을 거쳐 응답 | Module 정책 | TestingModule imports 조정 |
핵심: Module은 관계를 묶고, Controller는 요청을 정리하며, Provider는 테스트 가능한 로직을 맡는다.