java/에러
Strict stubbing argument mismatch. Please check: 에러
sungin95
2023. 12. 6. 17:56
equals & hashCode 의 중요성
@DisplayName("회원 정보를 입력하면, 새로운 회원 정보를 저장하여 가입시키고 해당 회원 데이터를 리턴한다.")
@Test
void givenUserParams_whenSaving_thenSavesUserAccount() {
// Given
UserEntity userAccount = createUserAccount("uno");
UserEntity savedUserAccount = createUserAccount("uno");
given(userAccountRepository.save(userAccount)).willReturn(savedUserAccount);
// When
UserDto result = sut.saveUser(
userAccount.getUserId(),
userAccount.getUserPassword(),
userAccount.getEmail(),
userAccount.getNickname(),
userAccount.getStatus(),
userAccount.getRoleTypes(),
userAccount.getPhone(),
userAccount.getRemainingDaysAtGym()
);
// Then
assertThat(result)
.hasFieldOrPropertyWithValue("userId", userAccount.getUserId());
then(userAccountRepository).should().save(userAccount);
}
private UserEntity createUserAccount(String userId) {
return UserEntity.of(
userId,
"password",
"dlrk@naver.com",
"nickname",
UserStatus.INACTIVE,
Set.of(RoleType.USER),
"01012345678",
0L
);
}
BDDMockito의 given willReturn 를 사용하여 테스트를 하는 도중 에러가 났습니다.
구글에 찾아 보니 엔티티가 서로 다른 객체라서 문제가 발생한다고 했습니다.
혹시나 하는 마음에 UserEntity 에 들어가 equals & hashCode를 확인해 보니 작성이 안되어 있었습니다. userId로 만들어 주니 바로 해결.
이런 실수 하지 마세요~~ㅠ
참고자료