새로운 할인 정책 개발

서비스 오픈 전에 갑자기 할인 정책이 변경된다면!?

이번에는 주문한 금액의 %를 할인해주는 정률 할인을 개발해보자.

테스트 만들기

Untitled

Untitled

package hello.core.discount;

import hello.core.member.Grade;
import hello.core.member.Member;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class RateDiscountPolicyTest {
    RateDiscountPolicy discountPolicy = new RateDiscountPolicy();

    @Test
    @DisplayName("VIP는 10% 할인이 적용되어야 한다")
    void vip_o(){ //vip는 적용되어야 한다.
        //given
        Member member = new Member(1L, "memberVIP", Grade.VIP);
        //when
        int discount = discountPolicy.discount(member, 10000);
        //then
        org.assertj.core.api.Assertions.assertThat(discount).isEqualTo(1000);
    }

}

테스트 코드 작성

Untitled

@DisplayName이 잘 실행된다.

성공 테스트가 잘 실행되는 것도 중요하지만 실패 테스트도 꼭 만들어봐야 한다.

		@Test
    @DisplayName("VIP가 아니면 할인이 적용되지 않아야 한다.")
    void vip_x(){
        //given
        Member member = new Member(2L, "memberBASIC", Grade.BASIC);
        //when
        int discount = discountPolicy.discount(member, 10000);
        //then
        org.assertj.core.api.Assertions.assertThat(discount).isEqualTo(1000);
    }

Untitled