작성
·
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값 증가 후) 그대로 리턴합니다.
결국 같은 인스턴스입니다.
감사합니다.