Error creating bean with name 'jpaAuditingHandler': Cannot resolve reference to bean 'jpaMappingContext' while setting constructor argument
트슈 : TEST 코드 작성 중 발생한 에러
개발할 때 CommonEntity를 두고 create_at, modified_at과 같은 엔티티의 생성과 수정을 자동으로 기록할 수 있도록 Auditing을 정의한 후 일반 엔티티에 상속받아 사용하고 있다. 이 때 Application class에서 @EnableJpaAuditing 를 달아 트랜잭션 커밋 시점에 플러시가 호출될 때, 하이버네이트가 자동으로 시간 값을 채워주도록 한다.
test는 항상 application을 부르는데, app이 entity를 감시하고 있으니 모든 테스트들이 JPA bean이 필요하게 된다. 통합테스트에서는 전체 코드를 부르기때문에 JPA bean도 주입받지만, 단위테스트는 메소드만 부르기 때문에 위와 같은 에러가 발생한다.
해결 :
1. test에 어노테이션 추가 @MockBean(JpaMetamodelMappingContext.class)
하지만 매번 어노테이션을 달아주어야하는 불편함이 있다.
2. Configuration으로 분리
@EnableJpaAuditing
@Configuration
public class JpaAuditingConfig {
}
@Configuration 을 달아주면 시작되는 시점에 컴포넌트로 주입되기 때문에 문제없다!
'Today I Run' 카테고리의 다른 글
[TroubleShooting] use --enable-preview to enable unnamed classes 에러 (+Java 19 이상) (2) | 2024.07.24 |
---|---|
Facade Pattern 이해하고 서비스에 적용하기 (1) | 2024.07.03 |
[GoogleStudyJam] AI와 어사 탈출하기(수료완료!) (1) | 2024.05.29 |
[GoogleStudyJam] Vector Search and Embeddings (0) | 2024.05.20 |
[GoogleStudyJam] Transformer Models and BERT Model (1) | 2024.05.10 |