Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaMappingContext': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: JPA metamodel must not be empty!
Caused by: java.lang.IllegalArgumentException: JPA metamodel must not be empty!
@WebMvcTest 사용해서 Controller 테스트 코드를 작성중에 위와 같은 에러가 났다. 이유는 SpringbootApplication에 있는 @EnableJpaAuditing 때문.
테스트 환경에서 @WebMvcTest를 사용하면, 웹 계층만 로드하므로 JPA와 같은 데이터 계층은 로드되지 않는다. (컨트롤러와 관련된 설정만 로드)
@EnableJpaAuditing 어노테이션은 JPA가 제공하는 Auditing 기능을 활성화하는데 사용된다. (엔티티가 생성되거나 변경될 때 시간을 자동 기록)
1. @EnableJpaAuditing을 별도의 설정 파일로 분리
@Configuration
@EnableJpaAuditing
public class JpaAuditingConfiguration {
}
2. test 클래스에 @MockBean(JpaMetamodelMappingContext.class), @AutoConfigureWebMvc 추가
@WebMvcTest(MemberController.class)
@MockBean(JpaMetamodelMappingContext.class)
@AutoConfigureWebMvc
class MemberControllerTest {
}