인프런 커뮤니티 질문&답변

찬빈님의 프로필 이미지
찬빈

작성한 질문수

스프링 핵심 원리 - 기본편

주문과 할인 도메인 실행과 테스트

OrderService를 테스트 하는데 MemberService도 꺼네서 사용하는 이유가 있을까요??

해결된 질문

작성

·

142

0

코드를 보면 조인만 하고 다른 동작은 안하는것 같은데 막상 MemberService 부분을 제외 해보면 NullPointException이 생겨서MemberService가 있어야만 예외가 안생기는지 궁금합니다@Test void createOrder() { Long memberId = 1L; Member member = new Member(memberId, "memberA", Grade.VIP); memberService.join(member); Order order = orderService.createOrder(memberId, "itemA", 10000); Assertions.assertThat(order.getDiscountPrice()).isEqualTo(1000); }

답변 1

0

안녕하세요. 찬빈님, 공식 서포터즈 y2gcoder입니다.

 

public class OrderServiceImpl implements OrderService {
     private final MemberRepository memberRepository = new MemoryMemberRepository();
     private final DiscountPolicy discountPolicy = new FixDiscountPolicy();

     @Override
     public Order createOrder(Long memberId, String itemName, int itemPrice) {
         Member member = memberRepository.findById(memberId);
         int discountPrice = discountPolicy.discount(member, itemPrice);

         return new Order(memberId, itemName, itemPrice, discountPrice);
    } 
}

OrderServiceImpl 의 createOrder() 코드를 보시면 memberId를 통해 Member 객체를 찾아오는 로직이 있습니다.

이를 위해서는 memberService.join()을 통해 먼저 member 객체를 회원가입(저장) 해주셔야 합니다 🙂

 

 

감사합니다.

찬빈님의 프로필 이미지
찬빈
질문자

감사합니다

찬빈님의 프로필 이미지
찬빈

작성한 질문수

질문하기