안녕하세요. 강의 잘 듣고있습니다. 제가 요즘 TDD에 대해서 이제 막 공부를 시작했습니다. 테스트방법에 대해서 mocking, stubbing이 있더라구요. 강의 내용 중 말씀해주신 FAKE 객체를 만들어서 테스트하는 방식이 Stubbing 방식이란 같은 것일까요? 실무에서도 Mockking 보다는 Stub객체를 만들어서 테스트하는 경우가 더 많은가요? 아직 mocking과 stub객체를 사용해서 테스트 하는 방식의 차이나 목적이 이해가 잘 되지 않아서 질문드립니다.
실무에 바로 적용하는 프런트엔드 테스트 - 2부. 테스트 심화: 시각적 회귀・E2E 테스트
시간: 9:00 Q. ‘비밀번호를 입력하지 않고 로그인 버튼을 클릭할 경우 “비밀번호를 입력하세요” 경고 메시지가 노출된다’ 를 테스트 할 때, 비밀번호가 입력하지 않은 상태인지 확인하는 부분은 없어도 되는 건가요?? 비밀번호를 입력하는 요소가 null 인지 확인하는 테스트는 없어도 되는 건가요??
실무에 바로 적용하는 프런트엔드 테스트 - 2부. 테스트 심화: 시각적 회귀・E2E 테스트
Q1. 장바구니, 구매 버튼 클릭 시 해당 상품의 이름을 cy.findByText('Handmade Cotton Fish 장바구니 추가 완료!').should('exist) 상품 이름을 직접 입력하는데, (통합 테스트에서 모킹 데이터를 사용한다면 모킹 데이터는 직접 설정하기 때문에 가능하지만), 실제 api를 사용하면 첫번째 상품 데이터가 변경할 수도 있기 때문에 실패할 수도 있기 때문에 다르게 작성해야 하지 않을까요?? 질문 드립니다 Q2. 로그인을 커스텀 커맨드에서 설정해서 session을 사용해 설정해서 테스트할 때, 웹에서는 로그인 성공/실패 여부는 확인할 수 없는 것 아닌가요?? 로그인이 실패하게 되면 로그인 관련 테스트는 모두 실패하게 되는데 그냥 이 결과로 로그인 성공/실패 확인을 하는 건가요??
실무에 바로 적용하는 프런트엔드 테스트 - 2부. 테스트 심화: 시각적 회귀・E2E 테스트
Q. cy.intercept()는 회원 가입 요청에 대한 성공/실패 응답을 모킹해서 받는데, 이 때 의도하는 코드는 1번이지만 응답이 정해져 있기 때문에 2번처럼 틀린 요청으로도 결과는 똑같이 나오게 될 거라고 생각됩니다. 실제 응답이 아니라 응답을 정해 놓고 전달하기 때문에 실제 동작과 다를 수도 있어서 이 부분은 '실패, 성공 시 문구 노출'이 나타나는 동작이 있다는 document 로만 이해해도 될까요?? 1 성공 데이터 요청 -> 성공 데이터 응답 실패 데이터 요청 -> 실패 데이터 응답 2 실패 데이터 요청 -> 성공 데이터 응답 성공 데이터 요청 -> 실패 데이터 응답
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요! 먼저 유사한 질문이 있었는지 검색해 보세요. 서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요 강사님 강의를 수강 중 질문이 생겨 질문드립니다. 강의 프로젝트의 패키지 구조를 보면 spring 속 api와 domain으로 나누었는데 이는 헥사고날 아케텍쳐와 연관이 있는 건가요?? 제 생각엔 domain으로만 구별을 해서 한 domain안에 service, controller, entity, repository를 생성했습니다.
DB에 의존하지 않는 FakeRepository를 구현할 때 JPARepository의 작동 원리를 고려하여 직접 코드를 작성하는걸로 이해했는데, 그렇다면 FakeRepository에 복잡한 쿼리를 쓰는 메소드가 필요하다면 그때마다 코드를 만들어줘야 하나요?? 예를 들면) 아래와 같은 메소드를 FakeRepository에서 구현하여 Test하고 싶을 때는 어떻게 하는 건가요? @Query(value = "SELECT * FROM (SELECT * FROM customer ORDER BY like_total DESC) WHERE ROWNUM <= 3", nativeQuery = true) List<UserEntity> findTop3ByLikeTotal();
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요! 먼저 유사한 질문이 있었는지 검색해 보세요. 서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요 강사님 강의 코드를 작성중 궁금한 점이 생겨 질문드립니다. 강의 예제 코드에서는 Dto를 예를 들어 OrderResponse 이런 식으로 Response, Requset를 생성해서 작성하셨는데 실무에서도 이런 방법으로 하시는 지 궁금합니다. 예로 프로젝트가 커지게 된다면 Order에 대해서도 많은 Request, Response가 발생하게 되어 저는 OrderDto 클래스를 두고 OrderDto클래스 속 static inner 클래스로 여러 Dto 클래스를 만들어서 사용했습니다. 이와 같은 방법은 추천 안하시는 지 궁금합니다. 또 Dto클래스를 record로 작성하는 경우도 봤는데 record를 사용하는 방법은 어떠한지 궁금합니다.
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요! 먼저 유사한 질문이 있었는지 검색해 보세요. 서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요 강사님 강의 13분초 쯤 productType에 대해 test를 하시는데 이 때 HANDMADE와 BAKERY에 대해서만 테스트를 진행하셨는데 BOTTLE에 대해서는 안해도 될까요?? 실무에서는 어떻게 하는 지 궁금합니다. 뭔가 추가해주어야 할 거 같아서요!
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요! 먼저 유사한 질문이 있었는지 검색해 보세요. 서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요 강사님 37분 쯤 test를 주문 생성 시 주문 상태는 INIT이다 라는 test를 하시는데 이를 이전 TotalPrice test하는 testcode와 같이 합쳐서 주문 생성 시 주문 상태는 INIT , TotalPrice를 구할 수 있다 이런식으로 하나로 합치는 건 어떻게 생각하시나요?
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요! 먼저 유사한 질문이 있었는지 검색해 보세요. 서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요 강사님 강의를 듣던 중 의문점이 생겨 질문을 남깁니다. 강의 28분 쯤 OrderService에서 ProductRepository를 의존하게 되는데 보통 A 레파지토리는 A서비스에서만 의존 하고 B레파지토리를 접근하려면 B서비스를 통해 접근한다 라고 들은 기억이 있는데 혹시 강사님만의 기준이 있을까요?? 감사합니다.
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요! 먼저 유사한 질문이 있었는지 검색해 보세요. 서로 예의를 지키며 존중하는 문화를 만들어가요. RESTFUL API 방식으로 url 작성 시 강의 13분에 나오는 postmapping에 orders/order이 더 맞지 않나요?? new 보단
강의 1분쯤에 jest.config.cjs로 쓰는 것과 package.json에서 작성하는 법 2가지를 알려주셨을 때 전자대로 적용해 실행하니 아래와 같은 에러가 발생했습니다! 이후에 package.json에 작성해서 실행하는 방법으로 변경하니 정상적으로 작동했는데 혹시 이 원인을 알 수 있을까요? modules를 import하지 못한 이유를 잘 모르겠습니다!
최소 최대 가격을 수정할 때 최소 금액이 0보다 작을 때 최대 금액이 최소 금액보다 작을 때 위 같은 조건을 처리할 때 관련 질문입니다 describe 사용 여부 // 1 describe('최소 최대 가격 확인 테스트', () => { it("최소 금액이 0보다 작을 때, 이렇게~ 처리", () => {}); it("최대 금액이 최소 금액보다 작을 때, 이렇게~ 처리", () => {}); it("최소 최대 가격을 수정하면 setMinPrice, setMaxPrice action이 호출된다", () => {}) }) // 2 it("최소 금액이 0보다 작을 때, 이렇게~ 처리", () => {}); it("최대 금액이 최소 금액보다 작을 때, 이렇게~ 처리", () => {}); it("최소 최대 가격을 수정하면 setMinPrice, setMaxPrice action이 호출된다", () => {}) 위 같은 조건 테스트를 작성 하는게 좋은지 아니면 아예 입력 처리를 해서 작성 안하는게 좋은지 확인 (0보다 작은수는 입력되지 않고, 최대 금액은 최소 금액보다 무조건 크게 작성하도록 처리 등)
안녕하세요! 덕분에 테스트 코드 잘 짜고있습니다 😋 강사님은 QueryDsl 에서 QueryProjection 을 통해 dto 로 한번에 조회하게 되었을때 해당 dto 를 service 계층에 두시는지, 혹은 repository 계층에 dto 를 하나 더 두시는지 궁금합니다!! 둘다 아니라면 어떻게 하시는지도 궁금합니다! (레이어드 아키텍처를 사용한다고 가정) 만약 Service 단에서 querydsl 을 위한 dto 를 생성하게 되면, repository 계층에서 service 계층을 알게되어 의존성측면에서 좋지 않다고 생각합니다. 그렇다고 repository 계층에서 querydsl 을 위한 dto 를 생성하게되면 의존성측면에서는 괜찮다고 볼 수 있지만 좀 번거롭다고 생각이듭니다. (계층마다 dto 가 하나씩..?) 선생님께서는 어떤 방식으로 해결하시는지가 궁금합니다! 제가 잘못생각한거라면 조언좀 부탁드립니다! (말을 너무 못하네요.. 죄송합니다)
선생님 안녕하세요 두번째 강의 막 시작했는데요...^^ 강의 아주 초반에는 postman으로 성적저장 put api 보낼 때는 스프링 서버가 잘 응답했는데, 오히려 성적저장 애플리케이션 개발 후 마지막으로 테스트 put api 보낼때는 응답못하고 500 에러 뱉으면서 local host access denied 이런 에러가 갑자기 나오는데 구글링하고 chatGPT 물어봐도 해결이 안 되요. 아무래도 db쪽 문제인 것 같은데 뭐가 문제일까요? 도와주세요.