인프런 커뮤니티 질문&답변

민기님의 프로필 이미지
민기

작성한 질문수

스프링 핵심 원리 - 기본편

회원 도메인 실행과 테스트

member와 findMember의 .isEqualTo 비교

작성

·

240

0

강의내용 7:00 에 등장하는
Assertions.assertThat(member).isEqualTo(findMember);

에서 member와, findMember를 isEqualTo(내용비교)를 통해 내용이 같은지 검증을 하고 있습니다.

여기서는 당연히 member와 findMember의 내용비교가 같다는 것을 이해하였습니다.

그런데 isSameAs(주소값 비교)로 검증을 해보아도 주소 값이 같다는 결과가 나왔습니다. println() 메서드를 통해 member와 findMember의 주소값이 같다라는 결과도 눈으로 확인하였습니다.

member는 new Member(1L, "memberA", Grade.VIP); 를 통해 객체를 새로 생성하여 member객체에 담았고,

findMember 객체는
member의 값을 join을 통해 memberServiceImpl.join -> MemoryMemberRepository.save를 호출하여 store에 저장되어이있는 값을 findById를 통해 가져와서 Member 타입의 findMember에 새로 저장을 했다라고 생각이 들어, 제 생각에는 member와 findMember의 주소값 비교가 다르다는 결과가 나와야 되지 않나 싶어 질문 남깁니다.

member객체와 findMember의 주소값 비교가 어떻게 같을 수 있는 것인가요 ?

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 민기님

현재 MemoryMemberRepository에 Member 인스턴스를 저정하고, 같은 MemberMemberRepository에서 Member 인스턴스를 조회하고 있습니다.

다음 코드를 보시면 Map에 인스턴스를 보관하기 때문에 찾을 때도 같은 인스턴스가 찾아지는 것이 맞습니다.

@Component
public class MemoryMemberRepository implements MemberRepository {

    private static Map<Long, Member> store = new HashMap<>();

    @Override
    public void save(Member member) {
        store.put(member.getId(), member);
    }

    @Override
    public Member findById(Long memberId) {
        return store.get(memberId);
    }

}

감사합니다.

민기님의 프로필 이미지
민기

작성한 질문수

질문하기