MockMvc란?
웹 어플리케이션의 서버를 띠우지 않아도 스프링 MVC의 동작을 재현할 수 있게해준다.
MockMvc는 Test 메소드에서 DispatcherServlet에 보내야할 요청을 대신 요청해줍니다. 그리고 이때 DispatcherServlet의 sub-class인 TestDispatcherServlet으로 요청을 보내서 응답을 MvcResult로 저장합니다. TestDispatcherServlet은 요청에 맞는 handler로 연결해주고 exception처리들도 이루어집니다.
실습
Controller
ControllerTest
perform
DispatcherServlet에 요청을 보냅니다.
RequestBuilder
를 받고 ResultAction
을 반환합니다.post
넘겨받은 URL과 Method에 맞는
MockHttpServletRequestBuilder
를 반환합니다MockHttpServletRequestBuilder
contentType
, content
, header
, cookie
와 같은 메소드로 요청에 설정을 해줄 수 있습니다.ResultAction
그렇게
perform
으로 부터 넘겨받은 ResultAction
은 다시 andDo
, andExpect
와 같은 메소드들로 원하는 처리를 해줄 수 있습니다.andExpect
특히
andExpect
는 ResultMatcher
들을 받아서 예상한 것과 반환값을 비교해줍니다.andDo(print())
MockMvc에서 요청에 대한 처리가 일어난 과정을 출력해줍니다
정리하면 아래와 같습니다
