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

gusdn85554님의 프로필 이미지
gusdn85554

작성한 질문수

스프링 핵심 원리 - 기본편

isSameAs 와 isEqualTo 차이

작성

·

892

0

안녕하십니까 테스트 코드 작성 중 궁금한 것이 생겨 질문드립니다.

1. memberService에서 member를 조회하셨는데, 예제여서 그런 것인지, 아니면 만약에 실제 DB를 사용하여 member를 조회한다면 memberService에서 실제로 조회를 하나요?? 저는 memberService가 회원가입을 하고 조회는 Repository에서 해야하는 것 아닐까? 라는 생각이 들었습니다,, 위의 코드가 잘못됐다가 아니라 정말 궁금해서 여쭤보고 싶습니다,,

2. isSameAs vs isEqualTo

isSameAs는 same reference, isEqualTo는 equal based on value라고 구글링을 해서 알게되었는데,

여기서 findMember는 객체인데 어떻게 isEqualTo를 해도 되는지 궁금합니다,, 

답변 1

0

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

1. memberService에서 member를 조회하셨는데, 예제여서 그런 것인지, 아니면 만약에 실제 DB를 사용하여 member를 조회한다면 memberService에서 실제로 조회를 하나요?? 저는 memberService가 회원가입을 하고 조회는 Repository에서 해야하는 것 아닐까? 라는 생각이 들었습니다,, 

member조회는 memberRepository에서 실제DB는 아니지만 DB를 모방한 메모리DB에 조회를 하여 결과를 반환 받아서 사용하고 있습니다.

--

memberService.findMember(1L)의 코드를 분석하면, 1번 ID를 가진 member를 조회하는데, MemberService에서는 받아온 1번 ID를 Repository에 ID를 넘겨주고, Repository에서 ID 조회 후 결과(1번 ID를 가진 Member)를 반환한 것입니다.

--

2. isSameAs는 same reference, isEqualTo는 equal based on value라고 구글링을 해서 알게되었는데,

여기서 findMember는 객체인데 어떻게 isEqualTo를 해도 되는지 궁금합니다,, 

아래의 링크 글을 보신것 같네요.

What is the difference between isSameAs() and isEqualTo() in FEST? - Stack Overflow

-

isEqualTo는 값을 비교하는 메서드이지만 객체를 비교하게 되는 경우 참조를 비교하게 됩니다.

* 참고Introduction to AssertJ | Baeldung

감사합니다.

gusdn85554님의 프로필 이미지
gusdn85554
질문자

1. memberService도 결국엔 Repo에서 가져오기 때문이군요,, 제대로 들어가보지도 않고 질문했네요,,

2. 오 맞습니다,,  감사합니다

String a = new String("aa");
String b = new String("aa");

assertThat(a).isEqualTo(b);

String의 경우도 객체인데 왜 이 경우는 참조가 아닌 값을 비교하나요? (이 경우 테스트가 통과됩니다!)

gusdn85554님의 프로필 이미지
gusdn85554

작성한 질문수

질문하기