MockMVC
🧪 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 응답, 상태 코드 등을 검증할 때 유용하다.
webAppContextSetup과standaloneSetup중 테스트 목적에 맞게 선택하면 된다.
댓글남기기