작성
·
262
0
안녕하세요.
동영상강의 8분 40초에
assertEquals(member, memberRepository.findOne(savedId));
이 부분에서 fail 결과가 나옵니다.
java.lang.AssertionError:
Expected :com.example.shop.domain.Member@83912203
Actual :com.example.shop.domain.Member@4740f07
서로 객체 hashcode가 달라 발생하는 것이라 판단해 Member 와 Address 클래스에 각각 equals 와 hashcode를 override 했습니다.
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Member member = (Member) o;
return Objects.equals(id, member.id) &&
Objects.equals(name, member.name) &&
Objects.equals(address, member.address) &&
Objects.equals(orders, member.orders);
}
그럼에도 불구하고 제대로 값을 비교하지 못하고있습니다.
무슨 문제가 있어 fail 이 발생하는지 궁금합니다.
답변 3
2
안녕하세요. 김준하님
다른 객체가 조회되는 것을 보니 테스트 코드에 트랜잭션이 재대로 안걸려 있는 것 같아요^^
같은 트랜잭션 범위여야 같은 영속성 컨텍스트가 유지되고, 같은 영속성 컨텍스트가 유지되어야 같은 객체가 조회되거든요.
@Transactional을 패키지 정보 포함해서, 확인해보시고 그래도 잘 안되면, 테스트 코드 전체를 답글로 남겨주세요^^
감사합니다.
0
0