public class RateDiscountPolicy implements DiscountPolicy{
private int discountPercent = 10;
@Override
public int discount(Member member, int price) {
if(member.getGrade() == Grade.VIP){
return price * discountPercent / 100;
}else{
return 0;
}
}
}
저 할인 퍼센트.. 처음에 그냥 간단하게 price / discountPercent 이렇게 생각했는데 그러면 안된다..
로직이 어렵다고 해서 뭔소린가 했더니.. 이게 참 테스트가 중요하다.. 다방면으로 테스트 해 봐야 한다.
price = 10000,discountPercent = 20 일 경우
2000이여야하는데
price / discountPercent를 하면 500이 됩니다.
class RateDiscountPolicyTest {
RateDiscountPolicy discountPolicy = new RateDiscountPolicy();
@Test
@DisplayName("VIP는 10% 할인이 적용되어야 한다.")
void vip_o(){
Member member = new Member(1L, "member_vip", Grade.VIP);
int discount = discountPolicy.discount(member, 20000);
Assertions.assertThat(discount).isEqualTo(2000);
}
@Test
@DisplayName("NO_VIP는 10% 할인 적용 X")
void vip_x(){
Member member = new Member(1L, "member_basic", Grade.BASIC);
int discount = discountPolicy.discount(member, 20000);
Assertions.assertThat(discount).isEqualTo(0);
}
}
@DisplayName은 빌드 하면 거기 제목처럼 떠준다.
'스프링 > 1. 스프링 핵심 원리' 카테고리의 다른 글
14강. 관심사의 분리 (0) | 2023.07.16 |
---|---|
13강. 퍼센트 할인정책 추가의 문제점. (0) | 2023.07.16 |
11강. 주문할인정책 테스트 (0) | 2023.07.16 |
10강. 주문할인정책 구현 (0) | 2023.07.16 |
6강. 회원 도메인 설계 (0) | 2023.07.13 |