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

ksk님의 프로필 이미지
ksk

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

회원 관리 웹 애플리케이션 요구사항

강의 8분 50초, TEST code 관련 질문

작성

·

208

0

TEST코드 작성에 있어서, 질문 드립니다.

아래 TEST코드 작성에서 

강의와 다르게 테스트 코드를

Assertions.assertThat(saveMember).isEqualTo(member);

로 작성하여도 테스트가 통과하는 것으로 확인 하였습니다.

 

하지만, 변수 member 객체는 id를 가지지 않고,

save메서드를 이용하여 memberRepository에 저장된 Member 객체는 id값을 가지기에,

서로다른 객체로 취급될 것이라 생각하여 TEST를 통과하지 못할 줄 알았습니다.

그러나 TEST가 잘 통과되는 것을 확인하였습니다.

 

id값을 가지지 못한 Member 와 리포지토리에 저장된 id값을 가지는 Member는 서로 다른 객체로 취급될것이라 생각했는데.... 이 경우 왜 TEST가 통과된 것인지 알 수 있을까요?

class MemberRepositoryTest {

    MemberRepository memberRepository = MemberRepository.getInstance();

    @AfterEach
    void afterEach() {
        memberRepository.clearStore();
    }

    @Test
    void saveTest() {
        //given
        Member member = new Member("kwon", 20);
        //when
        Member saveMember = memberRepository.save(member);
        //then
        Member findMember = memberRepository.findMember(saveMember.getId()); //강의코드
        Assertions.assertThat(findMember).isEqualTo(saveMember); //강의코드
        Assertions.assertThat(saveMember).isEqualTo(member); //TEST통과???
    }
}

답변 1

0

안녕하세요. ksk님, 공식 서포터즈 OMG입니다.

save 메서드의 반환값은 인자로 받은 member를 (id값 증가 후) 그대로 리턴합니다.

결국 같은 인스턴스입니다.

감사합니다.

ksk님의 프로필 이미지
ksk

작성한 질문수

질문하기