MockMvc란

웹 어플리케이션을 서버에 **배포하지 않고 테스트용 MVC 환경**을 만들어 요청 및 응답 기능을 제공해준다.

간단하게 말하면 테스트용 MVC 환경을 만들어주는 역할을 한다.


MockMvc의 한계

perform() 메소드를 사용해서 요청을 보낼 때 MockMvc 객체는

테스트 요청을 처리하는 TestDispatcherServlet이라는 클래스를 직접 사용한다.

이때문에 실제로 네트워크에 연결되는 것이 아닌 Spring이 **가짜 WebApplicationContext**를 만들어

HTTP 요청, 응답을 Mocking하기 때문에 실제 네트워크에서 발생하는 예외 케이스들은 잡을 수 없다.

EX)) Mocking된 http는 redirection이 불가능하기 때문에 redirection시 발생하는 예외 확인 불가능

이러한 문제들을 보완하기 위해서 RestTemplate, Rest-assured 등을 활용 가능하다.