inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Business Layer 테스트 (3)

재고 차감 시도 다른 접근법

673

leeseongju

작성한 질문수 10

2

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

강사님께서 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);
        });

감사합니다

spring tdd jpa mockito 소프트웨어-테스트 junit5

답변 2

1

박우빈

안녕하세요, leeseongju 님! :)

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

감사합니다. :)

0

인프런 AI 인턴

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

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

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

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

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

private 상수 테스트 관련 질문

0

82

1

void는 어떻게 테스트하나요..? void로 애초에 코딩하면 안되나요??

0

124

2

커버리지는 어떻게 활용하시는지 궁금합니다.

0

159

2

테스트 문서화 질문입니다

0

104

2

단위테스트 질문이 있습니다

0

95

2

컨트롤러는 모킹을 한 이유가 궁금합니다.

0

100

2

ERD 가장자리에 있는 도메인 테스트 질문

0

87

2

DTO 검증 필드에 대한 테스트 코드 작성은 어디까지?

0

132

2

OrderCreateRequest DTO에 대해서 궁금한점

0

101

2

고전파의 테스트 대역 사용 대상, 공유 의존성

0

154

2

계층 관련 질문이 있습니다.

0

137

3

'코틀린'에서는 빌더를 따로 쓰지 않는데, 이 때는 어떻게 test fixture를 만드시는지 궁금합니다

1

122

2

혹시 update 로직은 어떻게 테스트하나요? (@Setter?)

0

133

2

단위테스트와 통합테스트의 경계가 궁금합니다.

0

227

2

Service+Repository 통합테스트 관련 질문입니다.

0

149

2

OrderControllerDocsTest 작성 해봤는데요. 날짜 형식이 이상하게 나와요

0

183

2

test 용 .yml

0

89

2

throws Exception

0

78

2

카페키오스크 클래스 문의 ,,

0

87

2

Rest docs 문서용 테스트코드를 따로 작성해야 되나요?

0

172

2

테스트 코드에서 필요한 생성자

0

137

1

tearDown 순서

0

115

2

@Builder 생성자 private

0

135

2

@DisplayName gradle / intellJ

0

92

2