Spring/테스트
Service 테스트 - 예외 발생 방법
초코chip
2024. 3. 12. 13:31
개념
- 실패 테스트를 진행하다보면, 특정 예외가 잘 잡아지는지 확인할 필요가 있다.
- 따라서, 예외를 어떻게 발생시키는지 알아야할 필요가 있다.
테스트 대상 클래스
예외 처리를 할 때, 테스트 대상 클래스에서만 예외 발생 여부를 확인할 때
//엔티티로만 예외 값 검증을 하는 경우
private void checkPermission(Member member, Product product) {
if (!(product.isOwner(member) || member.isAdmin())) {
throw new BusinessException(INSUFFICIENT_PERMISSION);
}
}
확인 방법
테스트 대상 메서드를 호출할 때, 잘못된 값을 전달을 하면 됨
//given
String name = "상품1";
Integer initialPrice = -1; //금액이 마이너스인 경우
String content = "이것은 상품 설명 부분";
String category = Category.BOOK.getKey();
LocalDateTime deadline = LocalDateTime.now().plusDays(3);
외부(Mock) 클래스
예외 처리를 할 때, 예외 발생 여부가 외부(Mock)에 의해서 결정되는 경우
//외부 biddingRepository 메서드를 통해 예외 발생 여부를 확인
private void checkRelatedBidding(Product product){
if (biddingRepository.existsByProduct(product)) {
throw new BusinessException(RELATED_BIDDING_EXISTS);
}
}
확인 방법
외부(Mock) 객체의 행동을 지정할 때, 예외가 발생되었다고 설정하면 됨
when(biddingRepository.existsByProduct(product)).thenReturn(true);