- 스프링 프레임워크에서 제공하는 테스트용 라이브러리입니다. 이 라이브러리를 사용하면 Spring MVC 컨트롤러의 단위 테스트를 쉽게 작성할 수 있습니다. - MockMvc를 사용하면 HTTP 요청을 작성하고 컨트롤러의 응답을 검증할 수 있습니다. 이를 통해 통합 테스트를 실행하지 않고도 컨트롤러의 동작을 확인할 수 있습니다. - import org.springframework.test.web.servlet.MockMvc 패키지를 임포트 하여서 사용합니다.
// MockMvc를 사용하여 HTTP GET 요청 수행 예시MvcResultresult= mockMvc.perform(get("/api/users"))
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_JSON))
.andReturn();
// MockMvc를 사용하여 HTTP POST 요청 수행 예시StringrequestBody="{\\\\"username\\\\":\\\\"john\\\\", \\\\"password\\\\":\\\\"secret\\\\"}";
MvcResultresult= mockMvc.perform(post("/api/users")
.contentType(MediaType.APPLICATION_JSON)
.content(requestBody))
.andExpect(status().isCreated())
.andReturn();
// DispatcherServlet의 구성 설정 확인 예시DispatcherServletdispatcherServlet= mockMvc.getDispatcherServlet();
WebApplicationContextwebApplicationContext= dispatcherServlet.getWebApplicationContext();
SomeConfigurationconfiguration= webApplicationContext.getBean(SomeConfiguration.class);
// configuration의 필요한 구성 설정을 확인하고 테스트할 수 있습니다.
@TestpublicvoidtestExample()throws Exception {
// 테스트를 위한 MockMvc 객체 생성MockMvcmockMvc= MockMvcBuilders.standaloneSetup(controller).build();
// GET 요청 보내기MvcResultresult= mockMvc.perform(get("/example"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.message").value("Success"))
.andReturn();
// 추가적인 작업을 수행하기 위해 andDo() 메서드 사용
result.andDo(print());
// 다른 조작을 수행하기 위해 andReturn() 메서드 사용MvcResultmodifiedResult= result.andReturn();
// 결과 확인
assertEquals("application/json", modifiedResult.getResponse().getContentType());
}
💡 MvcResult - MockMvc에서 수행된 MVC 요청의 결과에 대한 상세한 정보를 제공합니다. 이 클래스는 응답 상태, 헤더, 내용 등과 같은 정보를 추출하기 위한 다양한 메서드를 포함하고 있습니다. - org.springframework.test.web.servlet 패키지를 임포트하여 사용합니다.