MockMvc란?
- 실제 객체와 비슷하지만 테스트에 필요한 기능만 가지는 가짜 객체를 만들어서 애플리케이션 서버에 배포하지 않고도 스프링 MVC동작을 재현할 수 있는 클래스를 의미한다.
- 내가 Controller 테스트를 하고싶을 때 실제 서버에 구현한 애플리케이션을 올리지 않고(실제 서블릿 컨테이너를 사용하지 않고) 테스트용으로 시뮬레이션하여 MVC가 되도록 도와주는 클래스이다.
🌏MockMvc 메서드
1) perform()
2) get("/xxx/xxx")
- HTTP 메서드를 결정할 수 있다. (get(), post(), put(), delete())
- 인자로는 경로를 보내준다
3) params(info)
- 키 = 값의 파라미터를 전달할 수 있다.
- 쿼리 스트링을 설정한다.
- 여러 개일 때는 params(), 하나일 때는 param()을 사용한다.
4) andExpect()
- 응답을 검증하는 역할을 한다.
-상태 코드 (status())
- isOk() : 200 (정상 상태)
- isNotFound() : 404 (클라이언트 오류)
- isMethodNotAllowed() : 405 (클라이언트 오류)
- isInternalServerError() : 500 (서버 오류)
- is(int status) : status 상태 코드 (임의로 지정한 상태 코드인지 확인)
- 뷰 (view())
- 리턴하는 뷰 이름을 검증한다.
- ex) view().name("hello") : 리턴하는 뷰 이름이 hello인가?
- 리다이렉트 (redirect())
- 리다이렉트 응답을 검증한다.
- ex) redirectUrl("/hello") : '/hello'로 리다이렉트 되었는가?
- 모델 정보 (model())
- 응답 정보 검증 (content())
5) andDo(print())
- 요청/응답 전체 메세지를 확인할 수 있다.
- print, log를 사용할 수 있는 메서드
- print() : 실행결과를 지정해준 대상으로 출력, default = System.out
- log() : 실행결과를 디버깅 레벨로 출력