웹 어플리케이션은 Tomcat(대표적인 서블릿 컨테이너)이라는 WAS서버에 배포.
브라우저의 요청은 WAS에 전달, 응답도 WAS로 받음.
Web API 테스트 -> WAS를 실행해야함.
스프링 3.2부터 스프링 MVC를 모킹해 웹 어플리케이션을 테스트하는 라이브러리
-> 실제 서블릿 컨테이너에서 컨트롤러를 실행하지 않고 컨트롤러에 HTTP 요청 가능.
웹 환경에서 컨트롤러를 테스트하려면 서블릿 컨테이너가 구동되고,
DispatcherServlet 객체가 메모리에 올라가야함.
이때 서블릿 컨테이너를 모킹시, 실제 서블릿 컨테이너가 아닌, 테스트 모형 컨테이너를 사용해 간단하게 컨트롤러 테스트 가능.
Mock MVC 설정 -> MockMvcBuilders 사용.
정적메서드 2개 제공
Controller에서 테스트 할 것
perform() - 요청 전송 역할, ResultActions 객체를 결과로 받음
ResultActions -> 리턴값 검증하고 확인할 수 있는 andExpect() 메서드 제공
get("/search") - HTTP 메소드 결정 -> 인자로는 경로 전달
params - 키=값 파라미터 전달 / 여러개 params(), 하나 param()
andExpect() - 응답 검증 / 하나라도 실패시 테스트 실패.
- 상태코드(status())
isOk() : 200
isNotFound() : 404
isMethodNotAllowed() : 405
isInternalServerError() : 500
* is(int status) : status 상태코드
content()) - 응답 정보 검증
ContentType - ContentType이란 HTTP 메시지에 담겨 보내는 데이터 형식 알려주는 헤더.