자바생
article thumbnail
728x90

 

 

MemberServiceImpl은 MemberRepository interface를 의존한다. 그러나 실제 할당하는 인스턴스는 구현체를 의존함.

--> 추상화와 구체화 모두 의존함. DIP 위반

 

*DIP(dependency inversion principle) 의존관계 역전 원칙

-> 구체화에 의존하지 말고, 추상화에 의존해야함.

 


 

설계가 잘되었다.

위 클래스(orderservice) 입장에서는 할인에 대해선 모름. 그냥 discountPolicy가 알아서 해줘라고 던져주는 것임.

만약 할인이 변경된다? 하면 할인 부분만 변경하면 됨. 전체 코드를 변경할 필요가 없음.

--> *단일 책임 원칙이 잘 지켜짐.

 

*SRP(Single responsibility principle) 단일 책임 원칙

-> 한 클래스는 하나의 책임만 가져야 한다.

 


 

Test할 때

given, when, then을 사용한다.

 


 

isSameAs VS isEqualTo

 

isSameAs는 same reference, isEqualTo는 equal based on value이다.

그러나 2번처럼 객체끼리 isEqualTo를 해도 테스트가 맞게 된다.

 

왜?

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

 

 

위의 사진과 같이 fido와 fidosClone 객체는 다른 객체를 나타낸다.

isEqualTo를 사용하게 되면 fail하게 된다. 즉, 이 말은 객체를 비교한 것이다.

QnA에 여쭤보니 isEqualTo는 객체를 비교하게 되는 경우 참조를 비교하는 것이라고 하셨다.

 

reference

https://www.baeldung.com/introduction-to-assertj

QnA


 

 

728x90
profile

자바생

@자바생

틀린 부분이 있다면 댓글 부탁드립니다~😀

검색 태그