@WebMvcTest는 Spring Boot 테스트 어노테이션 중 하나로, 주로 Spring MVC 웹 계층의 테스트에 사용됩니다. 이 어노테이션을 사용하면 웹 계층에 관련된 컴포넌트만을 로드하여 빠르게 테스트를 수행할 수 있습니다.
@WebMvcTest는 Spring MVC의 특정 컨트롤러를 대상으로 한 테스트를 지원합니다.MockMvc 인스턴스를 사용하여 HTTP 요청과 응답을 쉽게 테스트할 수 있습니다.테스트 클래스에 @WebMvcTest 어노테이션을 추가합니다. 특정 컨트롤러를 대상으로 테스트하려면 해당 컨트롤러 클래스를 어노테이션의 값으로 전달할 수 있습니다.
@WebMvcTest(SomeController.class)
MockMvc를 주입받아 사용합니다. MockMvc는 HTTP 요청을 디스패처 서블릿에 전송하고 결과를 받아 테스트하는 데 사용됩니다.
@Autowired
private MockMvc mockMvc;
필요한 경우, @MockBean을 사용하여 서비스나 리포지토리와 같은 다른 빈들을 모의 객체로 생성하고 주입할 수 있습니다.
@MockBean
private SomeService someService;
mockMvc 인스턴스를 사용하여 HTTP 요청을 수행하고 응답을 검증합니다.
@Test
public void someTest() throws Exception {
mockMvc.perform(get("/someEndpoint"))
.andExpect(status().isOk())
.andExpect(content().string("Expected Content"));
}
@RunWith(SpringRunner.class)
@WebMvcTest(SomeController.class)
public class SomeControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private SomeService someService;
@Test
public void testEndpoint() throws Exception {
when(someService.someMethod()).thenReturn("Hello");
mockMvc.perform(get("/someEndpoint"))
.andExpect(status().isOk())
.andExpect(content().string("Hello"));
}
}
이렇게 @WebMvcTest를 사용하면 Spring MVC 웹 계층의 로직을 효과적으로 테스트할 수 있습니다.