inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

176만명의 커뮤니티!! 함께 토론해봐요.

useEffect로 사용을 해도 되나요?

미해결

따라하며 배우는 리액트 A-Z[19버전 반영]

useEffect(() => { localStorage.setItem('todoData', JSON.stringify(todoData)); }, [todoData]); 이렇게 작성을 하고, 나머지는 다 주석을 처리했는데도 정상 작동하는 것 같더라구요. 하지만 의문인게 setTodoData((prev) => [...prev, newTodo]); localStorage.setItem('todoData', JSON.stringify([...todoData, newTodo])); 여기도 주석처리를 했는데, 여기는 조금 작성하는 게 다르 지 않나요? handleRemoveClick = () => { setTodoData([]) } 여기도 그렇구요. 그런데 그냥 다 정상 작동 하네요?

  • react
  • redux
  • tdd
  • typescript
  • next.js
  • 소프트웨어-테스트
gusn9719 댓글 1 좋아요 0 조회수 249

전체 테스트 vs asciidoctor 질문

미해결

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

@DisplayName("챌린지를 생성한다.") @Test void createChallenge() { // given LocalDateTime startDateTime = LocalDateTime.of(2024, 11, 11, 10, 10, 30); Member member = createMember(); memberRepository.save(member); Category category = createCategory(); categoryRepository.save(category); ChallengeCreateServiceRequest request = ChallengeCreateServiceRequest.builder() .title("제목") .durationInWeeks(2) .weeklyGoalCount(3) .categoryId(category.getId()) .color("색상") .content("내용") .build(); // when ChallengeResponse challengeResponse = challengeService.createChallenge(member, request, startDateTime); // then assertThat(challengeResponse.getId()).isNotNull(); assertThat(challengeResponse.getCategory()) .extracting("id", "name") .contains(1L, "카테고리"); assertThat(challengeResponse.getRecord()).isNull(); assertThat(challengeResponse) .extracting("startDateTime", "totalGoalCount") .contains("2024-11-11 10:10:30", 6); } assertThat(challengeResponse.getCategory()) .extracting("id", "name") .contains(1L, "카테고리"); afterEach를 작성해서 deleteAllInBatch로 레포지토리들을 삭제하고 있습니다. 전체 테스트에서는 아무런 문제없이 통과하는데 asciidoctor을 돌리면은 이 카테고리 아이디가 4L로 기대된다고 나옵니다.. 전체 테스트와 asciidoctor와무슨 차이가 있는건가요 ? 도대체 이유를 모르겠습니다ㅠ 카테고리 레포지토리를 쓰는곳을 보면 1. CategoryControllerTest 2. ChallengeControllerTest 3. CategoryServiceTest 4. ChallengeServiceTest -> 실패 부분 입니다.. 근데 컨트롤러 테스트를 제외하고,, 서비스, 레포지토리 테스트에서 afterEach 메소드 사용 deleteAllInBatch로 초기화를 시켜주고 있습니다. 근데 왜 다음과 같이 나오는지 이해가 안갑니다.. 이게 전체 테스트는 잘되고 asciidoctor를 첫번째 돌릴때만 그렇고 두번째에는 또 성공합니다.. 근데 이게 문제가 ci/cd때 테스트를 실패하니까 build가 안된다는 점입니다 ㅠ.ㅠ

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
돈벌고싶다 댓글 1 좋아요 0 조회수 170

SpringBootTest 최소화 방법 문의

해결됨

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

안녕하세요. Test code에서 Spring Boot 실행을 최소화 하기 위해 IntegrationTestSupport 추상클래스를 상속하여 구현하고 있었습니다. 하지만 IntegrationTestSupport를 상속하더라도 상속한 클래스에서 @MockBean, @SpyBean을 사용하게 될 경우 IntegrationTestSupport를 상속하더라도 해당 클래스에서 Spring Boot 실행이 되는 걸 확인했습니다. Spring Boot 내부적으로 같은 다른 Bean Context를 가지고 있기 때문에 Spring Boot를 실행하는 것 같은데, IntegrationTestSupport를 상속한 클래스에서 @MockBean을 사용하게 될 경우엔 어떻게 해야 Spring Boot 실행을 최소화 할 수 있을까요? 해당 질문 답변해주시면 감사하겠습니다. 강의 정말 잘 듣고 있습니다.

  • spring
  • tdd
  • mockito
  • 소프트웨어-테스트
  • junit5
박준수 댓글 2 좋아요 0 조회수 176

API 명세서 툴 ( Swagger vs Spring Rest Docs)

미해결

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

안녕하세요 강의에서 Spring REST Docs를 이용해서 API 명세서를 작성하시는데 실무에서도 똑같이 하시나요 ? 아니면 Swagger + Spring REST Docs 을 같이 사용하시는지 궁금합니다.

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
돈벌고싶다 댓글 1 좋아요 0 조회수 253

재고 엔티티 설계

미해결

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

안녕하세요 이번에 강의를 들으면서 동시성 문제를 실제 프로젝트에서 해결해보자는 취지에 엔티티 설계에 대한 고민이 생겨 질문 드립니다! public class Item { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long no; // 상품 : 품목 = 1 : N @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "prod_no", nullable = false) private Product product; @Column(name = "thumbnail_img_url") private String thumbNailImgUrl; // 대표 이미지 경로 // 품목옵션에 대한 필드 리스트 @OneToMany(mappedBy = "item", cascade = CascadeType.ALL, orphanRemoval = true) private List<ItemOption> itemOptions = new ArrayList<>(); private String code; // 품목코드 -> 상품코드 + 1 을 붙인 것 private String name; // 품목명 -> 옵션 그룹 + 옵션 값 @Column(name = "add_price", precision = 10, scale = 2) private Integer addPrice; // 추가금액 private Integer totalPrice; // 정상가격(원가) + 추가금액 private Integer qty; // 재고량 @Column(name = "saf_qty") private Integer safQty; // 안전재고량 @Enumerated(EnumType.STRING) private ProductSellingStatus sellingStatus; // 판매 상태 @Column(name = "max_qty") private Integer maxQty; // 최대 구매 수량 @Column(name = "min_qty") private Integer minQty; // 최소 구매 수량 } 현재 품목 엔티티라는 엔티티가 있습니다. 이 엔티티는 상품 + 옵션이 결합된 형태입니다. 그래서 재고 필드를 해당 엔티티에 정의 해주었습니다. 근데 여기서 들었던 의문점이 " 재고 엔티티를 따로 정의를 안해줘도 괜찮을까? " 라는 의문점이 들기 시작했습니다. 그래서 일단 확장성을 고려하지 않고 구현을 하게 된다면 이대로 품목 엔티티가 재고 필드를 가지고 있는 것도 괜찮을거 같다는 생각이 들었습니다. 하지만 확장성을 고려하게 된다면 재고 엔티티를 정의해 품목 엔티티와 일대일 관계를 갖도록 하는 것이 좋다고 생각하였습니다. " 확장성을 제외한 동시성 제어만을 고려했을 때 해당 설계도 괜찮을까? " 와 " 더 나은 설계는 무엇이 있을까? "에 대하여 조언을 듣고 싶습니다!!!

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
springYam 댓글 1 좋아요 0 조회수 118

Retry-ability와 커스텀 커맨드, 커스텀 쿼리 질문

해결됨

실무에 바로 적용하는 프런트엔드 테스트 - 2부. 테스트 심화: 시각적 회귀・E2E 테스트

안녕하세요 선생님 강의 잘 듣고 있습니다. 이번 강의에서 질문이 있습니다! 1. 커스텀 쿼리도 Retry-ability 지원되고 커스텀 쿼리 안에 커맨드도 Retry-ability가 지원되면 n의 m제곱 번의 재시도가 발생하는 것일까요? 2. 커스텀 커맨드와 커스텀 쿼리 중에 뭘 사용할 것인지는 Retry-ability 지원 유무와 체이닝을 기준으로 선택하면 될까요? 예시코드를 봤을 때 getCardButton 와 getProductCardByIndex 둘 다 DOM 요소를 조회해서 subject를 리턴하여 체이닝을 통해 후속 작업을 하는 것처럼 보이는데 왜 getProductCardByIndex 는 커스텀 커맨드로 작성하는지 잘 모르겠습니다..

  • javascript
  • tdd
  • 소프트웨어-테스트
  • vitest
  • e2e
  • chromatic
메가 댓글 1 좋아요 0 조회수 201

@Builder 관련 문의

미해결

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

생성자를 private로 하고 그 위에 빌더패턴을 사용하는데, 이러면은 결국에 모든 곳에서 생성자에 접근 가능하다는 얘기인데 private를 쓰고 builder를 하시는 이유가 있나요 ?

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
돈벌고싶다 댓글 2 좋아요 0 조회수 158

영속성 객체 구분으로 인한 JPA와 Querydsl의 Projection 사용

미해결

Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트

지금은 간단한 예제라 엔티티에서 JpaRepository를 사용하여 데이터를 가공해서 가져온 후 도메인 객체로 매핑시켜 controller에 넘겨 controller에서 response 객체로 변환시켰습니다. 만약 Projection을 사용하는 경우 Projection에서 바로 controller 패키지 안의 response 패키지 객체로 접근하는 것은 어떻게 생각하시나요?

  • spring
  • tdd
  • jpa
  • 소프트웨어-테스트
  • unittest
캄캄한인생 댓글 1 좋아요 0 조회수 255

@Value 관련 환경변수 주입 테스트코드 질문..

미해결

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

@ActiveProfiles("test") @SpringBootTest class CategoryServiceTest { @Autowired private CategoryService categoryService; @DisplayName("카테고리 목록들을 조회한다.") @Test void getAllCategories() { System.out.println("222222222222222222"); } } @Service @RequiredArgsConstructor public class KakaoApiService { @Value("${social.kakao.apikey}") private String kakaoApiKey; @Value("${social.kakao.redirect_uri}") private String kakaoRedirectUri; } 위와 같이 코드가 있을때 테스트 코드를 실행시키면 Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'kakaoApiService': Injection of autowired dependencies failed 다음과 같은 에러가 발생하는데,, @SpringBootTest를 돌릴때 환경변수 주입을 못받아서 실패하는것 같은데 이럴 경우 어떻게 테스트를 진행해야할까요 ?? 전혀 관련 없는 서비스인데 에러가 터져서 진행이 안됩니다 ㅜㅜ.. ```yml spring: profiles: default: local social: kakao: apikey: ${KAKAO_API_KEY} redirect_uri: ${KAKAO_REDIRECT_URI} jwt: secret: ${JWT_SECRET} access_expiration_time: 36000000 --- # 테스트 환경 spring: config: activate: on-profile: test h2: console: enabled: true datasource: url: jdbc:h2:mem:~/ChallengeApplication driver-class-name: org.h2.Driver username: sa password: jpa: hibernate: ddl-auto: create show-sql: true properties: hibernate: format_sql: true yml은 전체는 아니지만 이렇게 구성되어 있습니다. 환경 변수주입은 ChallengeApplication에 다 넣어놨는데, 이게 테스트코드를 돌릴시에는 ChallengeApplication가 도는게 아니라 Junit 하위에 있는게 돌아서 환경변수 주입이 안된게 돌아서 실행이 안되더라구요 .. 보통 어떤식으로 하시나요 ? ㅠㅠ

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
돈벌고싶다 댓글 2 좋아요 0 조회수 293

ResponseDto 위치 질문

미해결

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

ResponseDto 위치 질문이 있습니다. 왜 이건 컨트롤러 reponse 패키지에 넣지 않고, service 패키지에 reponse 객체를 두는건가요 ?

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
돈벌고싶다 댓글 2 좋아요 0 조회수 199

@RestControllerAdvice 와 @Validation

미해결

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

안녕하세요 선생님 좋은 강의 잘 듣고 있습니다! 다름이 아니라 Validation과 ControllerAdvice에 대해 질문이 있습니다. 컨트롤러 테스트 할 때 빈 validation이 적용 된 모든 필드를 하나씩 모두 검증 하나요? 컨트롤러에서 request 필드가 많아서 하나씩 검증 하기엔 너무 테스트가 길지 않을까 고민 됩니다. 실무에서도 컨트롤러의 모든 필드를 검증 하나요? 공통 예외 처리는 어떻게 하는게 좋을까요? @RestControllerAdvice를 basePackages 설정 하여 처리 하고 있습니다. 예상치 못한 예외의 경우가 생길것을 대비 하여 basePackages가 없는 advice를 두었습니다. 이렇게 하니 우선 순위가 밀려서 GeneralAdvice 가 먼저 선택되어 Order로 우선순위 설정 해두었습니다. 처리 못한 예외를 각 advice에 넣자니 다른 advice도 코드가 중복 될것 같아 이렇게 처리 했는데 실무에서는 어떻게 처리 하시는지 궁금 하여 질문 남깁니다.!

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
조희제 댓글 2 좋아요 0 조회수 232

spring security @AuthenticationPrincipal rest docs 질문

미해결

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

안녕하세요 강사님 강의를 굉장히 잘 들었던 수강생입니다. 다름이 아니라 최근 spring security 를 도입하고 난 뒤에 rest docs 에 대해 문제가 생겨 질문하게 되었습니다. '회원 정보 조회' 라는 API 가 있고, 이 API 는 로그인을 한 뒤에 securityContextholder 에 담겨져 있는 객체를 사용하고자 파라미터로 @AuthenticationPrincipal 이라는 어노테이션을 이용하여 받고 있습니다. 그러나...restdocs 를 이용하여 해당 API 를 문서화 시키려고 할때 객체가 null 이 들어가서 테스트가 실패를 하게 되더라구요. docs 가 아닌 일반 controller test 에서는 @SpringBootTest 를 사용하여 @WithUserDetails 를 통해 테스트를 통과했습니다. 그러나 @SpringBootTest 를 따로 사용하고 있지 않은 상황에서 어떻게 해결할 수 있을지 고민입니다 ㅠㅠ 감사합니다.

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
leeseongju 댓글 2 좋아요 0 조회수 229

브랜치 git clone 질문

미해결

실무에 바로 적용하는 프런트엔드 테스트 - 2부. 테스트 심화: 시각적 회귀・E2E 테스트

질문 git clone https://github.com/practical-fe-testing/test-example-shopping-mall.git 를 했는데 폴더안에 gitignore 과 readme 파일만 있는데 해당 브랜치를 clone해서 사용하는게 아닌건가요? 참고사항 대체방안으로 zip파일로 다운받아서 사용하고 있긴합니다!

  • javascript
  • tdd
  • 소프트웨어-테스트
  • vitest
  • e2e
  • chromatic
한나릴 댓글 1 좋아요 0 조회수 182

정적 팩토리 메서드 사용과 toEntity 메서드에 대해 질문 있습니다.

미해결

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

우선 빌더를 활용해 내부에서 객체를 생성하고 외부에서 해당 객체를 생성하려면 정적 팩토리 메서드를 사용하거나 혹은 toEntity 같은 메서드를 만들어 사용하면 좋을거 같다 라는 생각이 들었습니다. 궁금한 점은 외부에서 객체를 생성할때 어떤 경우에는 정적 팩토리 메서드를 사용해서 생성하고 어떤 경우에는 toEntity 같은 메서드를 만들어서 사용하면 좋을지 궁금합니다. @Getter @NoArgsConstructor public class ProductCreateServiceRequest { private ProductType type; private ProductSellingStatus sellingStatus; private String name; private int price; @Builder private ProductCreateServiceRequest(ProductType type, ProductSellingStatus sellingStatus, String name, int price) { this.type = type; this.sellingStatus = sellingStatus; this.name = name; this.price = price; } public Product toEntity(String nextProductNumber) { return Product.builder() .productNumber(nextProductNumber) .type(type) .sellingStatus(sellingStatus) .name(name) .price(price) .build(); } }

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
감바스 댓글 2 좋아요 0 조회수 247

인프라계층 구현체와 테스트 구현체에 대한 질문

미해결

Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트

안녕하세요. UserRepository 를 구현하는 구현체로는 UserJpaRepository 를 사용하는 UserRepositoryImpl 와 테스트용 구현체인 FakeUserRepository 가 있는데요. TDD라는게 단순 객체지향적인 설계를 잘하는 방법론이라면 납득이 가는데, 실제 서비스 되어야 할 코드가 잘 동작하는지 검증하기 위함이라는 관점에서는 조금 궁금한점이 생겨 질문드립니다. FakeUserRepository 는 UserRepository 의 계약을 잘 이행하고 테스트도 성공하도록 잘 구현하였습니다. 그런데 실제 서비스에 사용될 UserRepositoryImpl 는 한번도 검증된 적 없는데 테스트를 통해 어떻게 소프트웨어가 변화함에 있어서 확신을 가질 수 있나요? UserRepositoryImpl 내부 구현이 변경되었을때 여전히 FakeUserRepository 만 테스트를 실행할텐데 어떤식으로 개발 과정에서 확신을 얻을 수 있는지 궁금합니다. 추가적으로 TDD의 역할에는 어떤 구현 기술에 대해 잘 사용되었는지에 대한 검증은 포함되지 않나요? 예를 들어 스프링 데이터 JPA를 잘 사용하였는지..? 예를 들자면 저는 TDD를 해본적은 없지만 실제 실행되는 인프라 계층을 실행해볼 수 있는 샘플 테스트코드 개념으로 만들어서 사용하고 있는데요. 제가 개발하고 있는 기업용 솔루션이 버전이 높아짐에 따라 워낙 무거워져서 로컬 PC에서 WAS를 기동하는데에만 2분이 넘기 때문에 최소한의 인프라계층 혹은 인프라계층의 협력 클래스들정도는 테스트 코드로 직접 테스트해볼 수 있도록 테스트 코드를 작성해 두었습니다. 이렇게 해두면 어떤 이슈가 발생했을때도 곧바로 쉽게 테스트가 가능하니까요. 물론 DB 개발서버 장비에 연결하고 더미데이터를 가지고 실행하는 식으로요. 이번 강의에서 H2를 통한 인프라 테스트 강의까지가 딱 제가 하고 있는 테스트들이었는데요. 중간에 놓친것인지 테스트가 무거워진다는 설명만 하고 그뒤로는 리팩토링과 함께 인프라 레벨의 테스트는 언급을 안하셔서 제가 생각하는 구현 기술을 잘 사용하여 실제 서비스되는 인프라 모듈을 직접 테스트 하는 부분은 어떻게 해야할지 궁금합니다.

  • spring
  • tdd
  • jpa
  • 소프트웨어-테스트
  • unittest
dlsrksrhk 댓글 1 좋아요 0 조회수 267

Integration Test Truncate

미해결

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

안녕하세요! 좋은 강의 잘 들었습니다!! 강의 듣고, 테스트 적용해보며 한가지 궁금한게 생겼는데요! 테스트 데이터 삭제의 건 입니다! 요구사항이 다음과 같다고 한다면, 어떤 방법을 내리실 지 궁금해서요! Test라는 별도의 환경 없음. 로컬 개발환경은 개발DB를 바라보는 상황 JPA가 아닌 MyBatis Unit Test가 아닌 integration Test 혹시 이런 상황이라면, 테스트를 진행하며 추가되거나 변경된 데이터들을 어떻게 삭제할 수 있을까요 ?? 더 나아가서는, 성능테스트를 진행한다면 별도의 Test 환경이 없을 때 성능테스트를 진행하며 생긴 대량의 데이터들을 어떻게 원래대로 원복 시킬 수 있을까요 ?? 감사합니다!

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
skehdxhd 댓글 1 좋아요 0 조회수 124

readOnly = true 시 jpa 동작관련

미해결

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

readOnly = true 시에는 jpa 에서는 단순 cud 는 동작하지만, 변경감지는 안된다는 말씀이신가요?

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
개foot 댓글 2 좋아요 0 조회수 253

자바 익셉션 종류도 외우시나요??

미해결

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

안녕하세요. 강의를 수강하다가 문득 의문이 들었는데, 테스트 코드를 작성하실때 어떤 exception을 던질지도 다 알고 계신것 같더라구요! 예를들어, 아메리카노를 0개 주문할때는 IllegalArgumentException을 던진다거나요.... 혹시 이런 익셉션의 종류들도 전부 시간을 들여 외워야 할까요??? 아니면 자연스레 체득되길 기다릴까요??

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
HJ 댓글 2 좋아요 0 조회수 188

private 메서드를 public으로 바꾸면 어떤가요?

미해결

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

안녕하세요, 우빈님 강의 정말 잘 듣고 있습니다! 한가지 의문점이 드는 것은 private 메서드는 테스트를 하지 않고 그냐 유지하되, 필요 시에 따로 클래스를 분리하여 객체를 만드신다고 했는데요, 그냥 간편히 private 메서드를 public 메서드로 변환해서 내부 호출하는 방법은 별로 고려되지 않은 것 같은데 따로 이유가 있을까요? 혹시 createNextProductNumber()가 ProductService 클래스의 성격과는 맞지 않아서 분리하는 경우인지, createNextProductNumber()가 결국 다른 곳에서 사용 될 수 있이므로 별도의 파일로 관리하는지 궁금합니다

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
돈까스는맛있어 댓글 2 좋아요 0 조회수 187

서비스단 private 메서드의 책임을 새로운 객체로 분리 시, repository 의존성 이슈에 대해

미해결

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

학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요! 먼저 유사한 질문이 있었는지 검색해 보세요. 서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요 우빈님! 강의 너무 잘 듣고 있는 컴공과 대학생입니다!! 이번 목차에서 말씀해주신 내용을 바탕으로 개발한 프로젝트에 테스트코드를 작성하기 위해 리펙토링을 하던 도중, 의문점이 생겨서 질문 드립니다. 강의에서 말씀해 주신 것처럼, 서비스단의 private 메서드가 가지는 책임을 서비스단이 아닌 다른 객체로 책임을 위임하는 것이 더 객체지향적이라 생각해서 저도 똑같은 방식으로 리펙토링을 진행중입니다. 그런데, Layered architecture 에서 서비스단이 레포지토리단에 의존하고 있고, 강의에서와 마찬가지로 레포지토리단에 의존하고 있는 private 메서드인 경우에도 이 메서드의 책임을 서비스가 아닌 다른 객체로 위임하는 것이 과연 괜찮은 건지에 대한 의문이 들었습니다. Layered architecture 를 따른다면, 서비스단만이 레포지토리에 대한 의존성을 가게끔 하는 것이 맞지않나 라는 생각이고, 또 레포지토리의 변경이 발생했을때, 변경이 확산되는 범위를 서비스단으로 국한시키는 것이 더 좋은 게 아닐까라고 생각합니다. 강사님의 생각이 궁금합니다!! 답변 달아주시면 감사하겠습니다!

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
joon1754 댓글 2 좋아요 0 조회수 235

인기 태그

인프런 TOP Writers

주간 인기글