개발/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를 사용하면 컨트롤러의 단위 테스트를 간편하게 수행할 수 있습니다.

반응형