MockMvc란?
MockMvc는 Spring Boot에서 제공하는 테스트 유틸리티임.
• Spring MVC 애플리케이션의 컨트롤러를 서버를 띄우지 않고도 테스트할 수 있도록 지원함.
• 실제 HTTP 요청을 보내지 않고, 가상으로 요청 및 응답을 처리함.
MockMvc의 주요 특징
1. 가상 HTTP 요청 처리
• Mock 환경에서 컨트롤러 로직을 테스트할 수 있음.
• 실제 서버 없이도 HTTP 요청/응답의 동작을 확인 가능함.
2. 완전한 Spring 컨텍스트 지원
• MockMvc는 Spring의 DI(의존성 주입)와 컨텍스트를 활용해 컨트롤러 및 관련 빈을 로드함.
3. Rest API 테스트 가능
• GET, POST, PUT, DELETE 등의 HTTP 메서드와 다양한 요청 파라미터를 테스트할 수 있음.
사용 방법
MockMvc는 주로 JUnit과 함께 사용됨.
1. 설정
테스트 클래스에서 MockMvc를 생성하고 초기화함.
@SpringBootTest
@AutoConfigureMockMvc
public class MyControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
public void testGetEndpoint() throws Exception {
mockMvc.perform(get("/api/example")) // GET 요청
.andExpect(status().isOk()) // 상태 코드 200 확인
.andExpect(content().string("Hello, World")); // 응답 내용 확인
}
}
2. 요청 생성
• perform() 메서드로 HTTP 요청을 생성하고 테스트함.
• 요청 방식: get(), post(), put(), delete() 등을 사용함.
주요 메서드
1. perform(RequestBuilder requestBuilder)
• 요청을 생성하고 실행함.
mockMvc.perform(get("/api/example"));
2. andExpect(ResultMatcher matcher)
• 응답의 상태 코드, 헤더, 본문 등을 검증함.
mockMvc.perform(get("/api/example"))
.andExpect(status().isOk())
.andExpect(content().json("{\"key\":\"value\"}"));
3. andDo(ResultHandler handler)
• 실행 결과를 로깅하거나 추가 작업을 수행함.
mockMvc.perform(get("/api/example"))
.andDo(print()); // 요청/응답 로그 출력
4. param(String name, String… values)
• 요청 파라미터를 추가함.
mockMvc.perform(get("/api/example")
.param("key", "value"));
5. header(String name, String value)
• 요청 헤더를 추가함.
mockMvc.perform(get("/api/example")
.header("Authorization", "Bearer token"));
MockMvc의 장점
1. 빠른 테스트: 서버를 띄우지 않으므로 테스트 속도가 빠름.
2. HTTP 요청/응답 시뮬레이션: 실제 요청을 보내지 않고도 컨트롤러 로직을 확인할 수 있음.
3. 통합 테스트: 컨트롤러와 관련된 서비스, 리포지토리 로직까지 포함해 전체 흐름을 검증할 수 있음.
출처 : ChatGPT
'BE > Spring & Spring Boot' 카테고리의 다른 글
[Spring Boot] OSIV (0) | 2025.01.23 |
---|---|
[Spring Boot] Swagger와 OpenAPI (0) | 2025.01.22 |
[Spring Boot] Specification과 QueryDSL (1) | 2025.01.18 |
[Spring Boot] List<Sort.Order>와 Sort.Order.desc() (0) | 2025.01.17 |
[Spring Boot, JPA] EntityManager (1) | 2025.01.16 |