
에러가 발생한 메서드인 addOrderItems() 부분을 확인해 보았다.
private List<OrderItem> orderItems = new ArrayList<>();
public void addOrderItem(OrderItem orderItem) {
orderItems.add(orderItem); //NullPointerException
orderItem.setOrder(this);
}
orderItems는 List 형태이다.
Builder 패턴에서 List 필드의 기본 값이 null인 것이 생각나 메서드에서 다시 한 번 값을 초기화해봤다.
public void addOrderItem(OrderItem orderItem) {
orderItems = new ArrayList<>(); //초기화
orderItems.add(orderItem);
orderItem.setOrder(this);
}
@Transactional
public void toOrder(OrderDto orderDto, Long itemId, int count) {
Member member = memberRepository.findById(orderDto.getMember().getId())
.orElseThrow(NotFoundException::new);
Item item = itemRepository.findById(itemId)
.orElseThrow(NotFoundException::new);
Delivery delivery = Delivery.createDelivery(member);
List<OrderItem> orderItems = new ArrayList<>(); //초기화
OrderItem orderItem = OrderItem.createOrderItem(item, count);
orderItems.add(orderItem);
Order order = Order.createOrder(member, delivery, orderItems);
orderRepository.save(order);
}
테스트 실행
@Test
@DisplayName("주문 성공")
void test() {
//member, item, orderDto 생성
orderService.toOrder(orderDto, itemA.getId(), 10);
Order order = orderRepository.findById(itemA.getId())
.orElseThrow(NotFoundException::new);
assertThat(order.getMember().getName()).isEqualTo("아요니");
assertThat(itemA.getQuantity()).isEqualTo(990); //1000-10 = 990
}

'Trouble Shooting' 카테고리의 다른 글
[Spring Security] JWT 토큰이 계속 헤더에서 사라지는 오류 (임시(?) 해결) (0) | 2024.06.26 |
---|---|
[Spring Boot 프로젝트] 주문 중 재고 부족 오류 (0) | 2024.05.24 |
[EC2] SSH - Host key verification failed. (0) | 2024.05.20 |
[Spring Security 오류] 권한 접근 설정이 제대로 적용되지 않는 오류 (0) | 2024.05.19 |

에러가 발생한 메서드인 addOrderItems() 부분을 확인해 보았다.
private List<OrderItem> orderItems = new ArrayList<>();
public void addOrderItem(OrderItem orderItem) {
orderItems.add(orderItem); //NullPointerException
orderItem.setOrder(this);
}
orderItems는 List 형태이다.
Builder 패턴에서 List 필드의 기본 값이 null인 것이 생각나 메서드에서 다시 한 번 값을 초기화해봤다.
public void addOrderItem(OrderItem orderItem) {
orderItems = new ArrayList<>(); //초기화
orderItems.add(orderItem);
orderItem.setOrder(this);
}
@Transactional
public void toOrder(OrderDto orderDto, Long itemId, int count) {
Member member = memberRepository.findById(orderDto.getMember().getId())
.orElseThrow(NotFoundException::new);
Item item = itemRepository.findById(itemId)
.orElseThrow(NotFoundException::new);
Delivery delivery = Delivery.createDelivery(member);
List<OrderItem> orderItems = new ArrayList<>(); //초기화
OrderItem orderItem = OrderItem.createOrderItem(item, count);
orderItems.add(orderItem);
Order order = Order.createOrder(member, delivery, orderItems);
orderRepository.save(order);
}
테스트 실행
@Test
@DisplayName("주문 성공")
void test() {
//member, item, orderDto 생성
orderService.toOrder(orderDto, itemA.getId(), 10);
Order order = orderRepository.findById(itemA.getId())
.orElseThrow(NotFoundException::new);
assertThat(order.getMember().getName()).isEqualTo("아요니");
assertThat(itemA.getQuantity()).isEqualTo(990); //1000-10 = 990
}

'Trouble Shooting' 카테고리의 다른 글
[Spring Security] JWT 토큰이 계속 헤더에서 사라지는 오류 (임시(?) 해결) (0) | 2024.06.26 |
---|---|
[Spring Boot 프로젝트] 주문 중 재고 부족 오류 (0) | 2024.05.24 |
[EC2] SSH - Host key verification failed. (0) | 2024.05.20 |
[Spring Security 오류] 권한 접근 설정이 제대로 적용되지 않는 오류 (0) | 2024.05.19 |