개발/Spring Boot
[Spring Boot] Mock MVC란?
아현이라구
2023. 12. 14. 10:00
반응형
소개
스프링(Spring) 프레임워크에서 제공하는 테스트 유틸리티 중 하나로, 웹 애플리케이션의 컨트롤러를 테스트하는 데 사용됩니다. Mock MVC는 실제 서버나 네트워크 연결 없이도 컨트롤러의 동작을 시뮬레이션하고 테스트할 수 있도록 도와줍니다.
특징
가상의 HTTP 요청과 응답: Mock MVC는 HTTP 요청을 생성하고 가상의 HTTP 응답을 받는 환경을 제공합니다. 이를 통해 웹 애플리케이션의 컨트롤러 동작을 테스트할 수 있습니다.
컨트롤러 단위 테스트: 웹 애플리케이션에서 컨트롤러는 클라이언트로부터의 HTTP 요청을 받아 처리하고, HTTP 응답을 생성하는 역할을 합니다. Mock MVC를 사용하면 실제 서버를 기동하지 않고도 컨트롤러를 단위 테스트할 수 있습니다.
HTTP 메서드 지원: Mock MVC는 GET, POST, PUT, DELETE 등 다양한 HTTP 메서드를 지원하며, 이를 이용하여 다양한 상황을 시뮬레이션할 수 있습니다.
URL 매핑 테스트: 컨트롤러의 URL 매핑이 올바로 동작하는지 테스트할 수 있습니다.
간단한 Mock MVC 테스트의 예시.
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
@WebMvcTest(MyController.class)
public class MyControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
public void myControllerTest() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.get("/api/hello"))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().string("Hello, World!"));
}
}
이 예시에서는 MyController라는 컨트롤러를 테스트하고 있습니다.
MockMvc를 사용하여 "/api/hello" 경로로 GET 요청을 보내고, 예상되는 HTTP 상태 코드와 응답 본문을 확인하고 있습니다.
결론
이를 통해 개발자는 실제 서버나 네트워크 연결 없이도 컨트롤러의 동작을 시뮬레이션하고 검증할 수 있습니다.
Mock MVC를 사용하면 컨트롤러의 단위 테스트를 간편하게 수행할 수 있습니다.
반응형