MockMvc: WAS 미가동 가상 Servlet 환경

상위 맥락

01. Mock 환경과 인프라 < 01. Controller 단위 테스트 < 02. Spring MVC2 핵심 기술과 설계 < MVC < Spring < Web

핵심 정리

MockMvc는 실제 WAS를 구동하지 않고도 Spring MVC와 소통하는 웹 환경을 가상으로 제공하는 테스트 객체입니다. 컨트롤러 테스트를 위해 실제 브라우저, 네트워크, 서버를 모두 거치지 않아도 가상의 HTTP 요청과 응답을 만들 수 있습니다.

자료에서는 MockMvc의 핵심 목적을 @Controller 단위 테스트로 설명합니다. 컨트롤러가 요청을 받고, 파라미터를 바인딩하고, 응답 상태나 뷰 이름 또는 JSON 데이터를 반환하는 흐름을 서버 구동 없이 빠르게 검증하는 데 사용됩니다.

Mock 환경에서의 역할

MockMvc는 앞단의 WAS와 Servlet 환경을 가짜로 제공합니다. 테스트 코드는 RequestBuilder로 가상 요청을 만들고, perform()으로 요청을 실행하며, ResultActions와 ResultMatcher로 결과를 검증합니다.

이 구조 덕분에 컨트롤러는 실제 서버 환경 없이도 DispatcherServlet을 거친 것처럼 동작합니다. 따라서 단순히 컨트롤러 메서드를 직접 호출하는 테스트보다 Spring MVC의 매핑, 바인딩, 응답 처리 과정을 더 실제 흐름에 가깝게 검증할 수 있습니다.

함께 쓰이는 구성 요소

  • @WebMvcTest: 웹 계층에 필요한 설정만 로드합니다.
  • @MockBean: 컨트롤러가 의존하는 Service를 가짜 객체로 대체합니다.
  • ResultMatcher: HTTP 상태, 뷰, 모델, JSON 응답을 검증합니다.

한 문장 요약

MockMvc는 실제 WAS를 띄우지 않고도 Spring MVC의 요청-응답 흐름을 가상 Servlet 환경에서 검증하게 해주는 컨트롤러 테스트 핵심 도구입니다.

핵심 연결

DispatcherServlet와 함께 읽으면 좋습니다.