버그 발생 상황
- RestDocs 을 적용하기 위해 Controller 와 Service 클래스를 Mocking 하였다.
@WebMvcTest(RunningCrewController.class)
@MockBean private RunningCrewService runningCrewService;
원인
- 이전에 JPA 에서 제공하는 Audit 기능을 사용하기 위해 @SpringBootApplication 에 관련 설정을 추가한 적이 있었다.
- Spring 컨테이너를 요구하는 테스트는 가장 기본이 되는 XXXApplication 클래스가 항상 로드되는데, @EnableJpaAuditing 이 해당 클래스에 등록되어 있어서 모든 테스트들이 항상 JPA 관련 Bean 들을 필요로 하였다.
- @WebMvcTest 같은 슬라이스 테스트는 JPA 관련 Bean 들을 로드하지 않아 에러가 발생하였다.
해결
- @Configuration 을 사용하여 별도의 설정 클래스로 분리하였다.
결론
- 설정값은 @SpringBootApplication 이 아닌 별도의 설정 클래스를 만들어서 설정하자.
- 참고 사이트