🧪 MockMvc

정의

MockMvc실제 서버를 띄우지 않고 Spring MVC의 요청/응답 흐름을 테스트할 수 있게 해주는 테스트 도구이다. 컨트롤러, 메시지 변환기, 검증 로직을 포함한 MVC 흐름을 모의 환경에서 확인할 수 있다.

웹 애플리케이션을 배포하지 않아도 컨트롤러 동작을 빠르게 검증할 수 있다.

🧩 역할

  • 컨트롤러 테스트를 수행한다
  • HTTP 요청/응답 흐름을 모의한다
  • JSON 응답과 상태 코드를 검증한다
  • Spring MVC 구성 요소를 함께 테스트할 수 있다

🛠 초기화 방법

webAppContextSetup

실제 Spring Context를 사용한다.

MockMvc mockMvc;

@BeforeEach
void setUp(WebApplicationContext wac) {
    mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
}

standaloneSetup

특정 컨트롤러만 단독으로 테스트한다.

MockMvc mockMvc;

@BeforeEach
void setup() {
    mockMvc = MockMvcBuilders.standaloneSetup(new ApiController()).build();
}

🛠 사용 예시

mockMvc.perform(MockMvcRequestBuilders.get("/test"))
        .andExpect(status().isOk())
        .andExpect(jsonPath("$.error").value("false"));

🧩 주요 검증

검증 API 설명
status() HTTP 상태 코드를 검증한다
content() 응답 본문을 검증한다
header() 응답 헤더를 검증한다
jsonPath() JSON 응답 값을 검증한다
view() 반환된 뷰 이름을 검증한다
redirectedUrl() 리다이렉트 URL을 검증한다

🧩 특징

  • 실제 서버를 띄우지 않는다
  • 빠르고 가볍게 테스트할 수 있다
  • Spring MVC 흐름을 그대로 재현한다
  • ResultActions와 함께 결과 검증을 이어갈 수 있다

⚠️ 주의사항

  • webAppContextSetup은 실제 컨텍스트를 사용하므로 설정 영향이 크다.
  • standaloneSetup은 빠르지만 전체 설정을 모두 반영하지는 않는다.
  • JSON 검증을 자주 쓰면 jsonPath 의존성이 필요할 수 있다.
  • 반환 타입이 복잡한 경우 응답 구조를 명확히 해두는 것이 좋다.

📌 정리

  • MockMvc는 Spring MVC를 실제 서버 없이 테스트하는 도구다.
  • 컨트롤러, JSON 응답, 상태 코드 등을 검증할 때 유용하다.
  • webAppContextSetupstandaloneSetup 중 테스트 목적에 맞게 선택하면 된다.

연결문서

댓글남기기