웹 어플리케이션에서 Controller 를 테스트할 때, 서블릿 컨테이너를 모킹하기 위해서는 @WebMvcTest@AutoConfigureMockMvc 를 사용한다. 웹 환경에서 Controller 를 테스트하려면 반드시 서블릿 컨테이너가 구동되고 DispatcherServlet 객체가 메모리에 올라가야 한다. 하지만 서블릿 컨테이너를 모킹하면 실제 서블릿 컨테이너가 아닌 테스트용 모형 컨테이너를 사용하기 때문에 간단하게 Controller 를 테스트할 수 있다.

@WebMvcTest

Untitled

@DisplayName("지하철역 관련 Controller 테스트")
@WebMvcTest(StationController.class)
class StationControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @MockBean
    private StationService stationService;

		// 생략
}

위 예시 코드는 우아한테크코스 지하철 노선도 미션 중 지하철역 Controller 테스트이다. StationController 만 테스트할 것이기 때문에 @WebMvcTest(StationController.class) 으로 설정해두었다. 또, StationController 는 StationService 를 주입받아 사용하기 때문에 @MockBean 을 이용하여 가짜 객체로 생성하였다.

private MockMvc mockMvc;

mockMvc.perform(get(”/hello”))

.andExpect(status().isOK())