Spring - Mockito : org.mockito.exceptions.misusing.UnnecessaryStubbingException:

상우·2024년 12월 21일
post-thumbnail

상황

AddressService

addressService 클래스는 다음과같이
addressRepository를 필드로 가지고 있었고

addressService 클래스의
deleteMemberAddress() 메서드에서는

  • addressRepository 클래스의 findById() 메서드
  • addressRepository 클래스의 delete() 메서드

를 사용하고 있다

AddressServiceTest

addressService 클래스의 deleteAddressMemberAddress 메서드는
읽어보면 findById를 했을때 해당하는 Id의 MemberAddress가 없으면
MemberAddressNotFoundException 예외를 던진다
이 상황을 테스트하기 위한 테스트 코드를 작성했다

addressService가 필드로 가지고 있는 AddressRepository는
mock 객체로 만들어주었다.

따라서 deleteAddressMemberAddress 메서드에서 사용되는
AddressRepository의
findById() 메서드와
delete() 메서드를 스터빙해주었다.

문제

테스트 코드를 다음과 같이 작성한뒤 실행하자 다음과 같은 오류가 발생했다
왜일까?

원인

원인은 delete() 메서드가 사용이 되지 않았기 때문에 발생했다.
예외를 테스트하는 코드였고 예외가 발생해버리면 delete() 메서드는 사용되지 않았다.

따라서 오류코드에서는 delete() 가 사용되지 않으니
delete()의 스터빙은 불필요하다면서 오류코드를 던져주고 있는것이었다.

해결

delete() 를 스터빙한 부분을 지우고 실행하자 정상적으로 잘 동작하였다.

profile
엉성해도 우직하게

0개의 댓글