Spring test의 Mock이란?

sonnie
lucky-sonnie
Published in
3 min readAug 14, 2020

단위 테스트를 만들기 위해서는 스텁이나 목 오브젝트의 사용이 필수적이다. 대부분 의존 오브젝트를 필요로 하는 코드를 테스트하게 되기 때문이다. 하지만 목 오브젝트를 만드는 일이 가장 번거롭기 때문에 Mockito 프레임워크를 통해 목 오브젝트를 편리하게 작성할 수 있다.

Spring 테스트 코드를 작성하면서 @AutoConfigureMockMvc를 쓰는데 이 어노테이션에 대해 정리해보면 좋겠다고 생각했다.

① @AutoConfigureMockMvc

MockMvc의 구성을 자동으로 활성화하고 구성하기 위해 테스트 클래스에 적용 할 수있는 주석입니다.

② MockMvc 클래스

서버 측 Spring MVC (Model-View-Controller)테스트 지원을위한 주요 진입 점. 아래는

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.*;

// ...

WebApplicationContext wac = ...;

MockMvc mockMvc = webAppContextSetup(wac).build();

mockMvc.perform(get("/form"))
.andExpect(status().isOk())
.andExpect(content().mimeType("text/html"))
.andExpect(forwardedUrl("/WEB-INF/layouts/main.jsp"));

③ DispatcherServlet

Servlet Container에서 HTTP프로토콜을 통해 들어오는 모든 요청을 프레젠테이션 계층의 제일앞에 둬서 중앙집중식으로 처리해주는 프론트 컨트롤러(Front Controller).

클라이언트로부터 어떠한 요청이 오면 Tomcat(톰캣)과 같은 서블릿컨테이너가 요청을 받는데, 이때 제일 앞에서 서버로 들어오는 모든 요청을 처리하는 *프론트 컨트롤러를 Spring에서 정의하였고, 이를 Dispatcher-Servlet이라고 한다. 그래서 공통처리 작업을 Dispatcher 서블릿이 처리한 후, 적절한 세부 컨트롤러로 작업을 위임한다.

참조

토비의 스프링 1

https://docs.spring.io/

--

--