스프링 공부/인프런 김영한 스프링 핵심 원리 - 기본편 노트정리

2-8. 주문과 할인 도메인 실행과 테스트

모항 2022. 9. 4. 01:56

이번 회차에서는

저번 회차에서 만든 기능들을

일단 쌩으로 한 번 실행해보고, 그 다음에 테스트도 돌려본다.

2-5에서 했던 것과 동일하다.

 

그 전에 생각할 점이 하나 있다!

주문과 할인 도메인을 어떻게 설계했는지 떠올려보자

 

2-6. 주문과 할인 도메인 설계

저번 회차까지, 회원 정보를 어떻게 새로 저장하고 찾아올지와 관련된 구현 및 테스트를 했다. 지금부터는 할인 적용 기능에 대한 작업이 시작된다. 주문이 들어왔을 때 주문을 한 회원 정보 및

blowupmomo.tistory.com

클라이언트가

서비스에게 요청을 보내면

서비스가 MemberRepository와 DiscountPolicy에게 할 일을 던져주어

할인 적용 결과를 알아내 클라이언트에게 리턴해주는 방식으로 설계하였다.

 

그럼 오늘 만드는 실행 코드와 테스트 코드는 이 설계에서 어떤 놈에 해당할까?

바로 클라이언트이다!

이렇게 개발 과정의 흐름을 계속 잘 따라가며 진행하자.

 

 

 

 

쌩으로 실행해보기

회원가입을 하고, 그 회원이 주문을 넣고, 주문에 할인을 적용한 결과를 받아오고, 그걸 화면에 출력해서 확인해보자.

일단 사용할 MemberService와 OrderService 객체들을 선언해주고, psvm으로 메인 메소드를 만들어준다.

 

 

메인 메소드의 내용은 이렇게 채워준다.

 

 

이제 돌려보자.

잘 출력되었고,

내용을 보니 값도 다 맞다.

member가 VIP이기 때문에 10000원이었던 상품에 1000원의 할인을 적용해 9000원이라는 할인 결과가 나왔다.

 

 

 

 

 

테스트 돌리기

이번엔 테스트 코드를 짜서 돌려본다.

 

test 폴더 안의 hello.core 패키지에 order 패키지를 만들고, 그 안에 OrderServiceTest 클래스를 만든다.

 

 

내용은 위와 같이 채워준다.

쌩 코드로 짰던 것과 동일하지만,

마지막에 출력문으로 결과를 확인하는 것이 아니라 AssertJ의 assertThat을 사용하여 할인금액이 1000과 동일한지 검증한다.

 

 

돌려본다.

잘 pass되어서 초록불이 들어왔다.

 

 

모든 테스트를 한 번에 돌려보자.

모두 잘 pass된다.

 

 

 

 

 

여기까지 하면 일단 개발이 한바탕 다 끝난 것이다.

 

다음 회차에서는

우리가 객체 지향적으로 충분히 잘 만들었는지를 확인할 것이다.

 

구체적으로는

할인 정책이 정률 할인 정책으로 바뀐 상황을 가정하여, DiscountPolicy의 구현체를 바꾸는 것을 시도해보고

충분히 편하게 잘 바꿀 수 있는지

우리 코드가 좋은 객체 지향 프로그래밍의 조건을 충족하는지 볼 것이다.