Clean Code that Works.

오 갓~
이런 멋쟁이들이 ReflectionTestUtils 라는 아주 좋은 클래스를 만들어 두다니!!!

컨트롤러 테스트 케이스를 작성 중인데..
컨트롤러에서는 mav로 리턴한 값들을 체크하는게 주요 목적이다.

여기서 리턴한 값들 중에 가장 중요한것이 return url이 잘 맞게 넘어 오느 냐 확인하는 것이다.

근데 이것들 테스트 하기 위해서는 컨트롤러를 실행 시키는 테스트를 만들어야 하는데...
여기서 부터 고민에 빠지기 시작한다.
컨트롤러 안에 있는 Service코드 호출 하는 코드들은 어떻게 할 것인가.

컨트롤러를 @Autowired 해서 하면, Service 및 Repository로 주입 받아서 하기 때문에, 원하지 않는 통합 테스트가 되어 버린다.
컨트롤러 -> 서비스 -> 레파지토리

웁스 -,.-;;

하여, 열심이 구글링을 좀 해봤는데..
사실 목으로 서비스 만들어서 이것을 어떻게 리플렉션으로 해서 컨트롤러에 있는 서비스를 목 서비스로 바꿔 줄 수 없나.. 하는 방법을 찾고 있었다.

그런데 있었다. ㅋ_ㅋ

위 ReflectionTestUtils 라는 클래스를 통해서, 컨트롤러 클래스의 서비스 인스턴스를 목 인스턴스로 바꿔치기 할 수 있다.!!

ReflectionTestUtils.setField(action, "adManageBO", admanageBO);

위에처럼!!! 자세한 내용은 문서를 보면 아주 알 수 있다. 

목키토는 http://mockito.org/ 참고