주문 기능 테스트
테스트할 내용
주문 생성
주문 생성 시에 핵심 validation 확인 : 재고 수량 초과할 때
주문 취소
주문 생성 테스트
Member, Item 엔티티 생성
OrderService.order(member,item,orderCount) : 주문 생성
검증 : ① 주문상태는 ORDER여야 한다. ② 주문 상품 갯수 : 주문한 상품 수가 정확해야 한다. ③ 계산 로직 검증 : 주문 가격은 가격 X 수량이다. ④ 주문 수량만큼 재고 수량 감소 : 주문 수량만큼 재고가 줄어야 한다.
주문 생성 시 재고 수량 초과 테스트
Member, Item 엔티티 생성
OrderService.order(member,item,orderCount) : 주문 생성, 주문 수량>재고 수량
구현해둔 NotEnoughStockException이 발생해야하고, 코드가 더 흘러가면 테스트 코드를 잘못 작성한 것이므로 Assert.fail()로 오류 메시지 출력한다.
OrderService.order()로 주문 생성 OrderItem 생성>removeStock()으로 수량 감소 Item 클래스에서 구현된 removeStock() 익셉션!
OrderService.order() => OrderItem.createOrderItem() => Item.removeStock
DB나 스프링과 관계없이 단위테스트를 하는 것이 좋다! 물론 통합테스트도 필요하지만 말이다! 그래서 상품주문 재고 수량초과 테스트 시에 통합 테스트가 아닌, 핵심 validation 부분인 removeStock() 자체에 대한 단위테스트가 중요하다!
주문 취소 테스트 : OrderService.cancleOrder(orderId)
주문 상태 CANCEL인지 검증
상품 수량 다시 증가했는지 검증
도메인 모델 패턴 장점
Order 엔티티에 대해 테스트 가능. Order에서 핵심 비즈니스 로직들이 구현되기 때문.
Last updated