RateDiscountPolicy 추가
- 주문한 금액의 %를 할인해주는 새로운 정률 할인 정책인 RateDiscountPolicy 추가
RateDiscountPolicy 코드 추가
package hello.core.discount;
import hello.core.member.Grade;
import hello.core.member.Member;
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;
}
}
}
테스트 코드 추가
- [Ctrl] + [Shift] + [T]
- 테스트 코드 자동 생성
- JUnit5
- JUnit5는 @DisplayName 어노테이션에 한글 이름 지정 가능
- 테스트를 할 때는 실패 테스트도 만들어야 한다
- 테스트를 돌렸을 때 실패한 테스트는 코드 창 왼쪽에 빨간색 느낌표로 표시된다.
- 성공한 테스트는 녹색 체크로 표시된다.
- Assertions는 static import하는 것이 좋다.
- 메소드에서 [Alt] + [Enter] → Add on-demand static import for ~ 선택
- ⇒ import 문에 static 추가됨
- RateDiscountPolicyTest.java
package hello.core.discount;
import hello.core.member.Grade;
import hello.core.member.Member;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.*;
class RateDiscountPolicyTest {
RateDiscountPolicy discountPolicy = new RateDiscountPolicy();
@Test
@DisplayName("VIP는 10% 할인이 적용되어야 한다")
void vip_o() {
// given
Member member = new Member(1L, "memberVIP", Grade.VIP);
// when
int discount = discountPolicy.discount(member, 10000);
// then
assertThat(discount).isEqualTo(1000);
}
@Test
@DisplayName("VIP가 아니면 할인이 적용되지 않아야 한다")
void vip_x() {
// given
Member member = new Member(2L, "memberBASIC", Grade.BASIC);
// when
int discount = discountPolicy.discount(member, 10000);
// then
assertThat(discount).isEqualTo(0);
}
}
※ 본 게시글은 인프런의 스프링 핵심 원리 - 기본편(김영한)을 수강하고 정리한 내용입니다.
'Study > Spring' 카테고리의 다른 글
[스프링 핵심 원리 - 기본편] 스프링 핵심 원리 이해2 - 객체 지향 원리 적용(관심사의 분리★) (0) | 2022.12.10 |
---|---|
[스프링 핵심 원리 - 기본편] 스프링 핵심 원리 이해2 - 객체 지향 원리 적용(새로운 할인 정책 적용과 문제점) (0) | 2022.12.09 |
[스프링 핵심 원리 - 기본편] 스프링 핵심 원리 이해1 - 예제 만들기(주문과 할인 도메인 실행과 테스트) (0) | 2022.12.06 |
[스프링 핵심 원리 - 기본편] 스프링 핵심 원리 이해1 - 예제 만들기(주문과 할인 도메인 개발) (0) | 2022.12.04 |
[스프링 핵심 원리 - 기본편] 스프링 핵심 원리 이해1 - 예제 만들기(주문과 할인 도메인 설계) (0) | 2022.12.03 |