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

카도아보님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

주문 기능 테스트

OrderServiceTest 시 OrderItem 을리스트로 넘길때

해결된 질문

23.07.23 21:17 작성

·

279

0

안녕하세요. 강의 기준으로 응용하고 싶어서 orderitem을 한개가 아닌 여러개생성하고 주문하려고 하고 있는데

테스트java

  @Test
    @Rollback(value = false)
    public void 상품주문() throws Exception{
        Member member = new Member();
        member.setName("회원1");
        member.setLoginId("admin");
        member.setPassword("admin");
        member.setEmail("admin");
        em.persist(member);
        Item item = new Item();
        item.setItemName("티셔츠1");
        item.setPrice(100000);
        em.persist(item);
        OrderItem order1 = OrderItem.createOrderItem(item, item.getPrice(), 2,"blue","L");
        OrderItem order2 = OrderItem.createOrderItem(item, item.getPrice(), 4,"blue","L");
        List<OrderItem> orders = new ArrayList<>();
        orders.add(order1);
        orders.add(order2);
        Long orderId = orderService.order(member.getId(), item.getId(), orders);
        Order findOrder = orderRepository.findOne(orderId);
        Assert.assertEquals("상품 주문시 상태는 : ", OrderStatus.ORDER,findOrder.getOrderStatus());

    }
OrderService.java
 
@Transactional
    public Long order(Long memberId, Long itemId, OrderItem... orderItems) {

        //엔티티 조회
        Member member = memberRepository.findOne(memberId);
        Item item = itemRepository.findOne(itemId);
        List<OrderItem> orders = new ArrayList<>();
        //주문상품 생성
        for(OrderItem order : orderItems){
            OrderItem orderItem = OrderItem.createOrderItem(item,item.getPrice(),order.getQuantity(),order.getColor(),order.getSize());
            orders.add(orderItem);
        }

        // 주문 생성
        Order order = Order.createOrder(member, (OrderItem) orders);

        //주문 저장
        orderRepository.save(order);
        return order.getId();


    }

OrderItem... orderItems 파라미터가 list를 받지 못하는거같은데 혹시 어떻게 해야할까요?

 

 

 

 

답변 1

0

codesweaver님의 프로필 이미지

2023. 07. 24. 14:04

안녕하세요. 카도아보님, 공식 서포터즈 코즈위버입니다.

파라미터가 이와 같을 경우 something(Long memberId, OrderItem ... orderItem) 호출하는 쪽은 다음과 같이 호출해야 합니다. something(1L, orderitem1, orderitem2);

지금 작성하신 코드는 List<OrderItem> 형태이므로 order() 메소드의 파라미터를 다음과 같이 수정하여 처리할 수 잇습니다. order(Long memberId, Long itemId, List<OrderItem> orderItems) { ... }

감사합니다.

카도아보님의 프로필 이미지
카도아보
질문자

2023. 07. 26. 09:38

아 제가 ...을 처음 봐서 먼가했네요 !감사합니다.