스프링/1. 스프링 핵심 원리

12강. 퍼센트 할인정책 구현 + 테스트

sdafdq 2023. 7. 16. 13:56
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은 빌드 하면 거기 제목처럼 떠준다.