
์์ฃผ ๊ฐ๋จํ ์์ ๋ฅผ ๋ง๋ค์ด ํ๋ก์ ํธ ์งํ์ ๊ธฐ์ด ํ์ ๋ง๋๋ ๊ฐ์์๋ค. ์ฌ๊ธฐ์์ ์์๋ ๊ฒ์ ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด๋ค. ํ์ฌ ๊ฐ์ ์์ ์์๋ ์ธํฐํ์ด์ค๋ฅผ ํตํด ์์กด์ฑ์ ์๋ฒฝํ๊ฒ ํด๊ฒฐํ์ง ๋ชปํ๋๋ฐ, ๊ทธ ๋ฌธ์ ์ ์ ํตํด ์ถํ ์ด๋ค ์์ผ๋ก ์ฝ๋๋ฅผ ์ง์ผํ๋ฉฐ ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด์ ๊ด๊ณ๋ฅผ ์ด๋ป๊ฒ ์ ๋ฆฝํด์ผํ ์ง์ ๋ํด ์ค๋ช ํ๋ ๊ฐ์๊ฐ ์ด๋ค์ง๋ค. ์ด์จ๋ ํ์ฌ ์์ ์์ ํ๋ก์ ํธ์ ํ์ ์ด๋ค์์ผ๋ก ์ง์ผํ๋ฉฐ enum, interface, class๊ฐ ๋ฌด์์ธ์ง ์ ์๋์ง๋ฅผ ์ค์ฌ์ผ๋ก ์ดํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
๐งธ
์๋ชป๋ ์ ๋ณด๋ฅผ ์ ์๋ค๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์
๐งธ ๊ตฌ์กฐํ์ ๋ ์ธ ๊ผฌ์ฐ- ๐งธ
โ๏ธ ์ด ์ธ๊ฐ์ง์ package๋ฅผ ๋ง๋ค์๋ค.
- member
ใด class : Member, MemberServiceImpl, MemoryMemberRepository
ใด interface : MemberService, MemberRepository
ใด enum : Grade - discount
ใด class : FixDiscountPolicy
ใด interface : DiscountPolicy - order
ใด class : Order, OrderServiceimpl
ใด interface : OrderService
โ๏ธ member

โบ Member
ํ์์ ์ฅ์ ๊ด๋ฆฌ
GetterSetter(public)
: private ๊ฐ์ ์ธ๋ถ๋ก ๋นผ๊ฑฐ๋ ์๋ก์ด ๊ฐ์ ๋ฃ๋๋ค.
id, name, grade์ธ ์ด 3๊ฐ์ง private ์ ๋ณด๋ฅผ ๋ฃ์๋ค.
[OOP] Getter์ Setter๋ ์ง์ํ๋๊ฒ ์ข๋ค
๋ชฉ์ฐจ ๋ค์ด๊ฐ๊ธฐ ์ ์ ์ผ๋ง ์ ์ฌ๋ด์์ Getter์ Setter๋ฅผ ํจ๋ถ๋ก ์ฌ์ฉํ๋ฉด ์๋๋ ์ด์ ์ ๋ํ ์ธ๋ฏธ๋๊ฐ ์์๋ค. Setter์ ๋ํ ์ด์ผ๊ธฐ๋ ์๋ ๋ง์ด ์๋ ค์ ธ์์์ง๋ง Getter์ ๋ํ ์ด์ผ๊ธฐ๋ ์ ํ์ง ์
colabear754.tistory.com
โบ MemoryMemberRepository
ํ์์ ๋ณด๋ฅผ store์ ์ ์ฅํ๋ ํ์์ ์ฅ์
public void save(Member member) {
store.put(member.getId(), member);
}
save๋ผ๋ ๋ฉ์๋๋ Member ํด๋์ค์ ์ ์ํ ๊ฐ์ฒด๋ฅผ ๋ฐ๋ฅด๋ฉฐ Member์ ์๋ getter๋ฅผ ํตํด id ๊ฐ์ ์ป๊ณ ๊ทธ id ๊ฐ์ store์ put ํ๊ฒ ๋ค๋ ๋ด์ฉ์ด๋ค. ๊ทธ๋ ๊ธฐ์ save ์์ void๋ฅผ ๋ถ์ฌ์ค ๊ฒ์ด๋ค. ๋ฐํํ๋ ํ์ ์ void๋ฅผ ๋ถ์ฌ ํธ์ถํ ์ชฝ์ ์๋ฌด๊ฒ๋ ๋ฐํํ์ง ์์ ๊ฒ์ด๋ผ๊ณ ๋ช ์ํ ๊ฒ์ด๋ค. (ํธ์ถ ์ชฝ์ ๋ฃ์ด๋ฌ๋ผ ํ์ผ๋ ๋ฃ์ผ๋ฉด ๋์ธ ๊ฒ์ด๋ค.)
โขโขโข ์ด์ด์ ๋ค๋ฅธ ์ฝ๋ ๋ถ๋ถ โขโขโข
public Member findById(Long memberId) {
return store.get(memberId);
}
findById
: id๋ฅผ ์ฐพ์ ๋ ์ฌ์ฉํ๋ฉฐ ์ค์ ๊ฐ์ฒด๊ฐ ์๋ ๊ฒฝ์ฐ null์ ๋ฐํํ๋ค.
id๋ Member ํด๋์ค์ private Long id;๋ผ๊ณ ์ ์ธ๋์ด์๋ค. ๊ทธ๋ ๊ธฐ์ Map<Long, Member>๋ผ๊ณ ์ ์ธํ๊ณ store์์ id๋ฅผ ์ฐพ์ ๋๋ Long ํ์ ์ผ๋ก ์ ์ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ฉด findById ๋ฉ์๋๋ฅผ ํตํด ์ฐพ์ id๋ Member ํ์ ์ผ๋ก ๋ฐํ๋๋ค.
Q. findById์ getById์์ ์ฐจ์ด์ ์?
A. ํ์ฌ inteliJ์์ getById๋ณด๋ค getReferenceById๋ก ์ฌ์ฉํ๋๋ก ๊ถ์ ํ๊ณ ์๋ค. ์ฌ๊ธฐ์ getReferenceById๋ findById์ ๋ค๋ฅด๊ฒ ์ค์ ๊ฐ์ฒด๊ฐ ์๋ ๊ฒฝ์ฐ null์ด ์๋ EntityNotFoundException ์์ธ๊ฐ ๋ํ๋๋๋ก ํ๊ณ ์๋ค.
Q. Member member์ Member์ Long memberId์ Long, ์ ํ์ ์ด ๋ค๋ฅธ๊ฐ?
A. ๊ณ ๊ฐ์ด ์๋ค. ๊ณ ๊ฐ์ ์ ๋ณด๋ ์ด ์ธ๊ฐ์ง์ธ id, name, grade๊ฐ ๋๋ค. ์ด ์ค์ ์ค๋ณต๋์ง ์๋ ๊ณ ์ ํ ๊ฐ์ id ๋ฟ์ด๋ค. ๊ทธ๋ ๊ธฐ์ ๊ณ ๊ฐ์ ์ ๋ณด๋ฅผ ์ฐพ๊ณ ์ ํ ๋ id๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ฉด Member ๊ฐ์ฒด ์ id ํ๋๋ง์ ์ด์ฉํ์ฌ ์ฐพ๊ธฐ ๋๋ฌธ์ memberId ์์ Long ํ์ ์ผ๋ก ์ ์ด์ค ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ id๋ฅผ ํตํด ๊ณ ๊ฐ์ ์ ๋ณด๋ฅผ ์ฐพ์์ค๋ฉด ๊ทธ ์์ name๊ณผ grade๋ ํฌํจ๋์ด ์๊ฒ๋๋ค. ๊ทธ๋ ๊ธฐ์ Member ํ์ ์ผ๋ก ๋ฐํํ ์ ์๋ ๊ฒ์ด๋ค.
- findById์ getById์ ์ฐจ์ด ์ถ์ฒ
220905 TIL getById() vs findById()
๊ธ์์ผ ์ฝ๋ฉ ์ธํฐ๋ทฐ ์๊ฐ์ ๋ฐ์๋ ์ง๋ฌธ ์ค ์ ๋๋ก ๋๋ตํ์ง ๋ชปํ๋ ์ง๋ฌธ์ธ findById์ getById์ ์ฐจ์ด์ ์ ์์๋ดค๋ค. getById ์ฐ์ getById()๋ Spring Data JPA 2.7.2๋ถํฐ Deprecated ๋๊ณ getReferenceById()๋ก ๋ณ๊ฒฝ์ด
seungjjun.tistory.com
โบ MemberServiceImpl
ํ์๊ฐ์ ๊ณผ ํ์์กฐํ ํ๋ค. (ํ์์๋น์ค์ ๊ณต)
[ํ ์คํธ ํ ๋]
// ํ
์คํธ MemberServiceTest
MemberService memberService = new MemberServiceImpl();
...
์์ ์ฝ๋์ ํจ๊ป ํ์์ ๋ณด๊ฐ ๋ค์ด์จ๋ค.
MemberServiceImpl ์ธ์คํด์ค๋ฅผ ๋ง๋ค์๋ค. MemberServiceImpl ํด๋์ค๋ MemberService๋ผ๋ ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ๊ณ ์๋ค. ๊ทธ๋์ MemberServiceImpl์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค ๋ MemberService์ธ ์ธํฐํ์ด์ค ํ์ ์ผ๋ก ๋ณ์๋ฅผ ์ ์ธํ๋ค. ๊ทธ๋ ๊ฒ ํ ์ด์ ๋ ๋คํ์ฑ์ ์ํจ์ผ๋ก ์ธํฐํ์ด์ค๊ฐ ์ด๋ค ๊ตฌํ์ฒด์ ์ฐ๊ด๋์๋์ง ๋ชจ๋ฅด๊ฒ ํ๊ธฐ ์ํด์๋ค.
MemberServiceImpl memberServiceImpl = new MemberServiceImpl( );์ ์ฝ๋์ ์ ์ฐ์ฑ์ ๋จ์ด๋จ๋ฆฐ๋ค. ์๋ํ๋ฉด MemberServiceImpl์ ์ํด์๋ ๋ฉ์๋๋ง ์ด์ฉ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ฐ๋ฐ ์์ ์ฝ๋์ฒ๋ผ ํ์ ์ ์ธํฐํ์ด์ค๋ก ๋ณ๊ฒฝํ๊ฒ ๋๋ค๋ฉด ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋ ๋ค๋ฅธ ๊ตฌ์ฒด ํด๋์ค๋ก ๋ณ๊ฒฝํ๊ธฐ๋ง ํ๋ฉด ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋์ฌ๋ ๋์ ๋ฐฉ์์ด ๋ค๋ฅธ ๋ฉ์๋๋ฅผ ์ด์ฉํ ์ ์๊ฒ๋๋ค. ๊ทธ๋ ๊ฒ ๋๋ฉด ์ฝ๋๋ฅผ ํจ์ฌ ์ ์ฐํ๊ฒ ์์ฑํ๋ฉฐ ์ ์ง๋ณด์์๋ ์ข๋ค.
// MemberServiceImpl ํด๋์ค
private final MemberRepository memberRepository = new MemoryMemberRepository();
@Override
public void join(Member member) {
memberRepository.save(member);
}
...
MemoryMemberRepository(ํ์์ ์ฅ์)์ ์๋ ์ ๋ณด๋ฅผ ์ํ ํ๊ฒ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด
'private final MemberRepository memberRepository = new MemoryMemberRepository();' ์์ ์ฝ๋๋ฅผ ์์ฑํด์ค๋ค.
์๊น test ์ฝ๋์์ ๋ณธ ๊ฒ๊ณผ ๊ฐ์ ์ด์ ๋ก ์ธํฐํ์ด์ค๋ฅผ ํ์ ๊ทธ๋ฆฌ๊ณ ์ธํฐํ์ด์ค์ ์ฐ๊ฒฐํ ๊ตฌํ์ฒด๋ฅผ ์ ์ธํ๋ค. ํ์ ๋ฐฐ์ฐ๊ฒ ์ง๋ง ์ด๋ ๊ฒ ์ฐ๋ ๋ฐฉ์์ด ๋ง๋ ๋ฐฉ์์ ์๋๋ค. ๋ง์ผ ์ธํฐํ์ด์ค์ ์ฐ๊ฒฐ๋ ๊ตฌํ์ฒด๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ถ์ ๊ฒฝ์ฐ ์ ์ธ๋์ด์๋ ํด๋์ค๋ฅผ ํ๋ํ๋ ๋ฐฉ๋ฌธํ์ฌ ์ฝ๋๋ฅผ ์์ ํด์ผํ๊ธฐ ๋๋ฌธ์(์์กด์ฑ ๋ฌธ์ ) ์ด ๋ฐฉ์์ ์ ํธํ์ง ์๋๋ค.
ํ์ฌ ์ฝ๋์์ final์ด ๋ถ์ด์๋๋ฐ ๊ทธ ์ด์ ๋ ์ ์ธ๋ ๊ตฌํ์ฒด์ธ MemoryMemberRepository๋ฅผ ๋ค๋ฅธ ๊ตฌํ ํด๋์ค๋ก ๋ณ๊ฒฝ๋๋ ๊ฒ์ ๋ถ๊ฐํ๊ฒ ๋ง๋ค๊ธฐ ์ํจ์ด๋ค. (๋ด๋ถ ์ฝ๋ ์์ ์ด ๋ถ๊ฐํ ๊ฒ์ ์๋๋ค)
memberRepository์ ์ ๋ณด๋ฅผ ์ ์ฅํ์ฌ ํ์๊ฐ์ ์ด ๋๋๋กํ๋ค.
โ๏ธ discount
< ์กฐ๊ฑด >
- ํ ์ธ ์ ์ฑ ์ ๋ชจ๋ VIP๋ 1000์์ ํ ์ธํด์ฃผ๋ ๊ณ ์ ๊ธ์ก ํ ์ธ์ ์ ์ฉํด๋ฌ๋ผ. (๋์ค์ ๋ณ๊ฒฝ ๋ ์ ์๋ค.)
- ํ ์ธ ์ ์ฑ ์ ๋ณ๊ฒฝ ๊ฐ๋ฅ์ฑ์ด ๋๋ค. ํ์ฌ์ ๊ธฐ๋ณธ ํ ์ธ ์ ์ฑ ์ ์์ง ์ ํ์ง ๋ชปํ๊ณ , ์คํ ์ง์ ๊น์ง ๊ณ ๋ฏผ์ ๋ฏธ๋ฃจ๊ณ ์ถ๋ค. ์ต์ ์ ๊ฒฝ์ฐ ํ ์ธ์ ์ ์ฉํ์ง ์์ ์ ๋ ์๋ค. (๋ฏธํ์ )
โบ DiscountPolicy
: ์ผ๋ฐ(?) ํ ์ธ ์ ์ฑ
ํ์ ๋ ๊ฒ์ด ์๊ธฐ ๋๋ฌธ์ ์ธ์ ๋ ์ง ๋ณ๊ฒฝํ ์ ์๋๋ก ์ธํฐํ์ด์ค๋ก ์ ์๋ง ํด์ค๋ค.
โบ FixDiscountPolicy
: VIP๋ 1000์ ํ ์ธ ์ ์ฑ
private int discountFixAmount = 1000;
ํ ์ธํ ๊ฐ๊ฒฉ์ด ๋ณ๊ฒฝ๋ ์ ์์ผ๋ ๋ฐ๋ก 1000์์ ์ ์ธํ๋ค.
if (member.getGrade() == Grade.VIP) {
return discountFixAmount;
discount ๋ฉ์๋๋ Member์ price๋ฅผ ๋ฐ๋๋ค.(Member member, int price) ๊ทธ๋ ๊ฒ Member ํด๋์ค์ ์๋ getGrade๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฑ๊ธ์ด VIP์ด๋ฉด discountFixAmount๋ฅผ ๋ฆฌํดํ์ฌ ๊ฐ๊ฒฉ์ 1000์์ ํ ์ธํ ์ ์๋๋ก ํ๋ค.
โ๏ธ order

โบ Order
: ๊ณ ๊ฐ์ ์ฃผ๋ฌธ์ ๋ํ๋ด๋ฉฐ ์ต์ข ๊ธ์ก ๊ณ์ฐ
public Order(Long memberId, String itemName, int itemPrice ,int discountPrice) {
this.memberId = memberId;
this.itemPrice = itemPrice;
this.itemName = itemName;
this.discountPrice = discountPrice;
}
ํ ์คํธ ์ฝ๋๋ฅผ ์ง๋ฉด ์ธ์๋ฅผ ๋ฐ๊ฒ ๋๋๋ฐ, ๊ทธ ์ธ์๋ฅผ ๋ฐ์ ํ๋๋ฅผ ์ด๊ธฐํํ๋ ๊ฒ์ด Order ์์ฑ์๊ฐ ํ๋ ์ผ์ด๋ค.
์ธ์์ ๋ํด์ ์ฝ๊ฒ ์ค๋ช ํ์๋ฉด ํ ์คํธ ์ฝ๋์ ์์ ๋งค๊ฐ๋ณ์(memberId, itemName ๋ฑ) ์์ ๊ตฌ์ฒด์ ์ธ ๊ฐ์ด ๋ค์ด๊ฐ๊ฒ๋๋ค. ๊ทธ๊ฒ์ ์ธ์๋ผ๊ณ ํ๋๋ฐ
โขโขโข ์ด์ด์ ๋ค๋ฅธ ์ฝ๋ ๋ถ๋ถ โขโขโข
public Long getmemberId() {
return memberId;
}
public String getItemName() {
return itemName;
}
getter๋ฅผ ์ด์ฉํ์ฌ memberId์ ItemName์ ์ ๊ทผํ ์ ์๋๋ก ํ๋ค. ๊ทธ ์ด์ ๋ Order ํด๋์ค์์ ๋ณ์๋ฅผ private์ผ๋ก ์ ์ํ๊ธฐ ๋๋ฌธ์ Order ํด๋์ค๊ฐ ์๋ ๋ค๋ฅธ ์ธ๋ถ ํด๋์ค์์ ํด๋น ๊ฐ์ฒด ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ถ์ผ๋ฉด getter๋ฅผ ํตํด์ผํ๋ค.
๋ง์ฝ getter๋ฅผ ํตํด ๋ค๋ฅธ ์ธ๋ถ ํด๋์ค์์ ํด๋น ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ถ๋ค๋ฉด, ์์์ ๋ดค๋ฏ์ด order.getmemberId();๋ฅผ ์ฐ๋ฉด ๋๋ค.
โขโขโข ์ด์ด์ ๋ค๋ฅธ ์ฝ๋ ๋ถ๋ถ โขโขโข
public String toString() {
return "Order{" +
"memberId=" + memberId +
", itemName='" + itemName + '\'' +
", itemPrice=" + itemPrice +
", discountPrice=" + discountPrice +
'}';
}
toString์ ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ์ฌ๋ฌ ์ ๋ณด๋ฅผ ๋ฌธ์์ด๋ก ๋ฐํํด์ค๋ค.
Q. ๋ง์ฝ toString์ ์ฐ์ง ์๋๋ค๋ฉด ์ด๋ป๊ฒ ์ถ๋ ฅ์ด ๋ ๊น?
Order order = new Order(1L, "Laptop", 1000, 100);
System.out.println(order);โ
A. ์์ ๋ก chat-GPT๊ฐ ๋ง๋ค์ด์คฌ๋ค. ์ถ๋ ฅ๊ฒฐ๊ณผ๋ [ Order@5e2de80c ] ์ด๋ ๊ฒ ๋์ค๊ฒ ๋๋ค.
์ฆ, toString์ ์ฐ์ง ์๋๋ค๋ฉด memberId,itemname,itemprice,discountprice๊ฐ ์ญ์ฑ- ์ถ๋ ฅ๋์ด ๊ฒฐ๊ณผ๊ฐ์ ํ์
ํ๊ธฐ ์ด๋ ค์ธ ์ ์๋ค.
โบ OrderServiceImpl
: ์ฃผ๋ฌธ ๊ณ ๊ฐ์ ํ์ธํ์ฌ ๋ฑ๊ธ์ ๋ง๋ ํ ์ธ์ ์ฑ ์ ์ ์ฉ ํ๋ค.
private final MemberRepository memberRepository = new MemoryMemberRepository();
private final DiscountPolicy discountPolicy = new FixDiscountPolicy();
์ฃผ๋ฌธ ๊ณ ๊ฐ ๋ด์ฉ์ ๊ฐ์ ธ์ค๊ณ , ๊ทธ์ ๋ง๋ ํ ์ธ ์ ์ฑ ์ ๊ฐ์ ธ์ค๊ธฐ ์ํด ์ฝ๋๋ฅผ ์ ์ธํ๋ค. ๊ตฌํ์ฒด๋ฅผ ๋ค๋ฅธ ๊ตฌํ์ฒด๋ก ๋ฐ๊พธ๋ ๊ฑธ ์ธ๋ถ์์ ์์ ํ ์ ์๋๋ก final๋ก ์ ์ํ๋ค.
โขโขโข ์ด์ด์ ๋ค๋ฅธ ์ฝ๋ ๋ถ๋ถ โขโขโข
@Override
public Order createOrder(Long memberId, String itemName, int itemPrice) {
Member member = memberRepository.findById(memberId);
int discountPrice = discountPolicy.discount(member, itemPrice);
return new Order(memberId, itemName, itemPrice, discountPrice);
}
createOrder๋ผ๋ ๋ฉ์๋๋ก ๋ฐํํ์ ์ Order๊ฐ ๋๋ค. ์ด๊ฑธ ์ ์ดํดํ๊ธฐ ์ํด ํ ์คํธ ์ฝ๋๋ฅผ ๋จผ์ ์ดํด๋ณด๋๋ก ํ๊ฒ ๋ค. ํ ์คํธ ์ฝ๋ OrderServiceTest๋ฅผ ๋ณด๋ฉด Order order = orderService.createOrder(memberId, "itemA", 10000);์ด๋ ์ฝ๋๊ฐ ์๋ค.
์ธ์๊ฐ createOrder๋ก ๋งค๊ฐ๋ณ์์ ๋ง์ถฐ ๋ค์ด์ค๊ณ memberId๋ memberRepository๋ก ๋ค์ด๊ฐ ํ์ ์ ๋ณด๋ฅผ ์ฐพ๋๋ค.(ํ์์ ๋ณด ์ฐพ๋ ๊ฒ์ ํตํด ํ์ ๋ฑ๊ธ, ํ์ ์ด๋ฆ ๋ฑ์ ์์์ ๊ฒ์ด๋ค.) ๊ทธ๋ฆฌ๊ณ ์ป์ด๋ธ ํ์ ์ ๋ณด(member)์ ์ํ ๊ฐ๊ฒฉ์ ๊ฐ์ง๊ณ discountPolicy์ ์๋ discount ๋ฉ์๋์ ์ ๋ฌํ๋ฉด ํ์ ๋ฑ๊ธ์ด VIP์ธ ๊ฒฝ์ฐ 1000์์ ํ ์ธํ๋ผ๋ ์ฝ๋์ ๋ง์ถฐ discountFixAmount๋ฅผ ๋ฐํ ๋ฐ์ ๊ฒ์ด๋ค. ๊ทธ๋ผ 1000์์ด๋ ๊ฐ์ ํ ์ธํ๋ค๋ ์ ๋ณด๊ฐ discountPrice์ ์ ์ฅ๋๋ค.
์ด๋ ๊ฒ ํด์ Order(์ฃผ๋ฌธ์ ๋ฐ์ ์ต์ข ๊ณ์ฐํ๋ ํด๋์ค)์์ ์๊ตฌํ๋ ๋งค๊ฐ๋ณ์์ ๋ง๋ ์ ๋ณด๋ฅผ ๋ชจ๋ ์ ๋ฌํ ์ ์๊ฒ ๋์๋ค.
๋ค์ ํ ์คํธ ํด๋์ค๋ก ๊ฐ๊ฒ ๋ค. Assertions.assertThat(order.getDiscountPrice( )).isEqualTo(1000);์ด ์๋ค. ์ด ์ฝ๋๋ getDiscountPrice๊ฐ 1000์์ด๋ ๋์ผํ์ง์ ๋ํด ๋ฌป๋ ์ฝ๋์ธ ๊ฒ์ด๋ค. ๊ทธ๋ผ ์๊น ์์ ์๋ ํ ์คํธ ์ฝ๋์์ Order์ ์๋ ๊ฐ์ฒด ์ ๋ณด๋ค์ order์ ๋ฃ๊ณ Order ํด๋์ค์ ์๋ getDiscountPrice ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ๊ฐ private์ผ๋ก ์ ์ธ๋ ํ ์ธ ๊ฐ์ ๋ฐ์์ฌ ์ ์๊ฒ ๋ ๊ฒ์ด๋ค. ๊ทธ๋ ๊ฒ 1000์์ด ๋ง๋์ง ํ์ธํ๋ ๊ณผ์ ์ด ๋ ๊ฒ์ด๋ค.
[ โถ๏ธ ]
[Spring] ๊น์ํ ๊ธฐ๋ณธํธ_ ์น์ 4. ๊ฐ์ฒด์งํฅ์๋ฆฌ์ ์ฉ
์น์ 3. ์์ ๋ง๋ค๊ธฐ์์ ์ ๊น ์ธ๊ธํ์ง๋ง ๊ตฌํ์ฒด์ ์์กด์ฑ์ ์์ ํ ๋ฐฐ์ ํ ์ฝ๋๊ฐ ์๋์๋ค. ์ธํฐํ์ด์ค์ ์ฐ๊ฒฐ๋ ๊ตฌํ์ฒด๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ฉด ํ๋ํ๋ ํด๋์ค๋ฅผ ์ฐพ์๊ฐ ์์ ํด์ผํ๋ ์ผ์ด ๋ฐ์ํ
post-this.tistory.com
ํผ์ ์ฒ์ฒํ ๊ณต๋ถํ๋ฉฐ ์์ฑํ์ต๋๋ค.
์๋ชป๋ ๋ด์ฉ์ด ์ ํ์์ ์ ์์ผ๋, ๊ฐ์ํ๊ณ ๋ด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
๐ ๋ชจ๋๋ค ํ์ดํ
ํ์ธ์ ๐