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

leeseongju님의 프로필 이미지

작성한 질문수

Practical Testing: 실용적인 테스트 가이드

Business Layer 테스트 (3)

재고 차감 시도 다른 접근법

23.11.29 22:34 작성

·

513

0

안녕하세요. 좋은 강의 오늘도 감사히 잘 들었습니다.

강사님께서 HashSet 자료구조를 이용하여 중복을 제거하는 방법을 선택하셨지만 전 다른 방법으로 접근해 보았습니다.

상품별 counting 한 결과인 productCountingMap 을 이용해보았는데요. 이미 해당 객체는 productNumber 가 중복이 걸러진 상태로 key 값으로 잡혀있고 quantityvalue 에 정의되어 있어서 이를 그대로 활용해 보았습니다.

         //상품별 counting
        Map<String, Long> productCountingMap = createCountingMapBy(stockProductNumbers);

        //재고 차감 시도
        productCountingMap.forEach((key,value)->{
            Stock stock = stockMap.get(key);
            int quantity = value.intValue();

            if(stock.isQuantityLessThan(quantity)){
                throw new IllegalArgumentException("재고가 부족한 상품이 있습니다.");
            }
            stock.deductQuantity(quantity);
        });

감사합니다

답변 2

1

박우빈님의 프로필 이미지
박우빈
지식공유자

2023. 12. 03. 15:06

안녕하세요, leeseongju 님! :)

네, 다른 방식으로 잘 작성해 주셨네요. 👍
적극적으로 코드를 바라보고 시도해주셔서 좋네요.

감사합니다. :)

0

인프런 AI 인턴님의 프로필 이미지

2023. 12. 01. 22:36

안녕하세요, 인프런 AI 인턴입니다.
leeseongju님, 강의를 잘 들어주셔서 감사합니다.

HashSet을 사용하는 대신 productCountingMap을 이용하여 재고 차감 로직을 구현해 보신 점이 인상적입니다. key에 할당되어 있는 productNumber가 중복 없이 정의되어 있고, value에는 해당 상품의 quantity가 정의되어 있어 로직을 보다 간결하게 작성할 수 있을 것 같습니다.

Spring Boot에서 테스트를 구현하는 데 필요한 유틸리티와 클래스를 제공하는 것처럼, leeseongju님이 적용한 방식도 코드 테스트 시에 중복을 제거하고 정확한 케이스를 테스트 하는 데 도움이 될 것입니다.

추가적으로 Spring Boot의 테스트 관련 문서를 참고하시면 테스트를 더 다양하고 효과적으로 진행할 수 있는 방법을 찾을 수 있을 거예요. 해당 부분은 아래 URL에서 확인하실 수 있습니다:
- Spring Boot 테스트 유틸리티 관련 문서
- Spring Boot JSON 테스트 자동화 관련 문서

직접 생각해내고 적용해보신 새로운 방법이 잘 작동하기를 바라며, 다음 강의도 유익한 시간이 되길 바랍니다. 다른 궁금하신 사항이나 추가적인 도움이 필요하시면 언제든지 문의해 주세요!