Spring Test MockBean, SpyBean
내가 기존의 프로젝트들을 스프링 부트 1.4로 올리게 된 주요 원인.
간단히 어노테이션을 하나 붙이는 것 만으로 테스트 코드에서 불필요한 기능이 작동하는걸 막을 수도 있고, 특정한 테스트 케이스를 간편하게 줄 수 있어서 참 좋다.
@MockBean
과 @SpyBean
은 반대되는 기능을 가지고 있는데, @MockBean
을 붙이게 되면 해당 객체의 모든 method가 깡통으로 바뀌고, 필요한 경우에 별도로 코드를 붙여 진짜 메소드를 호출하게 하거나 설정한 결과값을 반환하도록 만들 수 있다. 반대로 @SpyBean
은 해당 객체가 정상적으로 작동하고, 불필요한 몇몇 기능들만 작동하지 않게 하거나 내가 원하는 결과값을 반환하도록 만들 수 있다.
이 두 가지 새로운 어노테이션을 썼을 때 가장 마음에 들었던건 테스트 클래스 내부에서 어떤 bean에 @MockBean
, @SpyBean
을 붙이게 되면, 해당 bean을 사용하는 모든 dependency에 mock, spy로 교체된 bean이 대신 주입되는 부분이었다.