
오늘 몇 가지 기능을 테스트 하다가 위와 같은 에러가 발생했다. StoreRepository 타입의 Bean을 찾지 못했다고 하는데...
@DataJpaTest
class StoreServiceImplTest {
private final StoreService storeService;
private final CategoryService categoryService;
private final StoreRepository storeRepository;
private final CategoryRepository categoryRepository;
@Autowired
public StoreServiceImplTest(StoreRepository storeRepository, CategoryRepository categoryRepository) {
this.storeRepository = storeRepository;
this.categoryRepository = categoryRepository;
this.storeService = new StoreServiceImpl(storeRepository, categoryRepository);
this.categoryService = new CategoryServiceImpl(categoryRepository);
}
@Test
public void 매장_저장에_성공한다() {
// given
RequestSaveCategory requestSaveCategory = RequestSaveCategory.builder()
.name("중식")
.build();
ResponseSaveCategory savedCategory = categoryService.save(requestSaveCategory);
RequestSaveStore requestSaveStore = RequestSaveStore.builder()
.categoryId(savedCategory.getId())
.name("매장1")
.build();
// when
ResponseSaveStore savedStore = storeService.save(requestSaveStore);
// then
assertThat(savedStore.getName()).isEqualTo(requestSaveStore.getName());
}
}
위는 테스트할 때 작성했던 코드이다.
문제가 무엇이었나 찾아보니...
CategoryRepository는 Data JPA를 이용해서 JpaRepository를 상속받아 사용했고, StoreRepository는 EntityManager를 이용해서 직접 구현했는데 그냥 JPA를 직접 사용한 클래스는 자동 주입이 안 된다고 한다. 그래서 @Import 어노테이션을 사용해서 해당 부분만 직접 주입되도록 설정했다.


이제 테스트가 잘 진행된다!
'공부 > JPA' 카테고리의 다른 글
| [JPA] 한 번 조회하는데 쿼리가 여러 번 실행될 때 (0) | 2024.10.08 |
|---|---|
| [JPA][Querydsl] 동적 쿼리 작성, 정렬해서 Slice 반환하기 (0) | 2024.05.20 |
| [JPA] 엔티티 그래프(EntityGraph) 사용하기 (0) | 2024.03.11 |
| [JPA] 스프링 OSIV (Open Session In View) 사용하기 (0) | 2024.03.02 |
| [JPA] LazyInitializationException 해결하기 (0) | 2024.02.28 |