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로 만들어 주니 바로 해결. 

 

이런 실수 하지 마세요~~ㅠ

 

참고자료

https://velog.io/@topqr123q/BDDMockito.given-%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%82%AC%EC%9A%A9%ED%95%B4%EC%95%BC-%ED%95%98%EB%82%98%EC%9A%94-Strict-stubbing-argument-mismatch

 

BDDMockito.given() 은 어떻게 사용해야 하나요? (Strict stubbing argument mismatch)

stubbing argument mismatch 를 만났을 때

velog.io