[SpringBoot / Controller(Presentation Layer) Test] Argument(s) are different: Wanted: Actual invocations have different arguments: 해결하기트러블슈팅2023. 8. 22. 06:47
Table of Contents
728x90
728x90
에러 메세지
컨트롤러에서 회원 가입 기능의 통합 테스트 작성 중 아래와 같은 에러가 발생했다.
원인
메세지 확인 결과. Member 객체의 주소값이 다른 것을 확인할 수 있었다.
//Expected
com.example.lolchampionsinvestment.domain.member.service.MemberService#0 bean.signUp(
com.example.lolchampionsinvestment.domain.member.domain.Member@da34f809
);
//Actual
com.example.lolchampionsinvestment.domain.member.service.MemberService#0 bean.signUp(
com.example.lolchampionsinvestment.domain.member.domain.Member@34e63b41
);
해결
https://javadoc.io/doc/org.mockito/mockito-core/2.8.47/org/mockito/ArgumentMatchers.html
위의 공식문서를 통해 org.mockito.ArgumentMatchers의 refEq() API를 사용하여 해결하거나
verify(memberService).signUp(refEq(member));
혹은 두 객체 비교 시 내용이 동일한지 확인하게 하기 위해 직접 equals와 hashCode를 재정의해준다.
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Member member = (Member) o;
return cash == member.cash &&
Objects.equals(userId, member.userId) &&
Objects.equals(pw, member.pw) &&
Objects.equals(nickname, member.nickname) &&
Objects.equals(create_date, member.create_date) &&
Objects.equals(update_date, member.update_date);
}
@Override
public int hashCode() {
return Objects.hash(userId, pw, nickname, cash, create_date, update_date);
}
728x90
300x250
@mag1c :: 꾸준히 재밌게
2023.04 ~ 백엔드 개발자의 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!