디버그
2024.07.04.(목)
개인과제
오늘은 개인과제를 하며 아래와 같은 문제가 발생했었다.
- Repository 테스트 코드 작성 중에 user의 값이 중복
- 아래의 코드와 같은 부분에서는 값이 null인데 Service 테스트 코드에서는 어떻게 작성해야 하나
튜터님께 질문하면서 디버그를 하는 것을 배웠다.
뭔가 이때까지는 이게 왜 그런 문제가 발생하는지 에러만 보고 디버그를 할 생각을 안하고 있었다.
- Step Over : 다음 줄(같은 함수 내)
- Step Into : 다음 줄(해당 함수에서 사용하는 다른 함수의 로직에서 동작..?)
- Step Out : 이전? -> 정확하지 않음. 안 해봤음.
디버그에서 이런 게 있는지도 모르고 있었다.
그렇게 해서 1번 문제는 DB의 table을 지우고 해결되었으며,
2번 문제는 수정 중.. 1번 하면서 DB 내용 다 지워서 그런건가 현재 추측 중..
추가적으로 알게된거는 any(Long.class)는 anyLong()과 같은 함수라는 것
아래의 코드와 같이 작성된 것은 eq()? 이런 함수를 이용해야 하는 것 -> 정확하지 않음
// given(storeRepository.findById(TEST_STORE_ID)).willReturn(Optional.of(TEST_STORE));
// given(reviewRepository.findById(TEST_REVIEW_ID)).willReturn(Optional.of(TEST_REVIEW));
given(storeRepository.findById(anyLong())).willReturn(Optional.of(TEST_STORE)); // anyLong() == any(Long.class)
given(reviewRepository.findById(anyLong())).willReturn(Optional.of(TEST_REVIEW)); // eq(TEST_STORE_ID) vs anyLong() ?
Repository의 테스트 코드를 작성하면서 CreateAt 이런 컬럼은 생성자로도 넣어줄 수 없고 테스트 코드를 작성하자고 Setter 어노테이션을 다는 것은 매우 비효율적이라 판단하여 질문하였던 것은 주석 처리된 방식도 있고 주석처리되지 않은 방식이 있는데 현재로서는 주석처리되지 않은 것처럼 Mockito.mock를 사용하라고 추천해주셨다.
// 라이브러리 powerMock? setterX 값 세팅 의존성 추가..
// 현재 given when then 활용
Review mock = Mockito.mock(Review.class); // given when then 적용
코드 카타
* 프로그래머스로 진행
- 알고리즘
- 콜라 문제
- SQL
- 자동차 평균 대여 기간 구하기
오늘의 회고
- 12시간 중 얼마나 몰입했는가?
오늘은 7시부터 시작! 물론 오늘도 저녁에 일찍 나가야 해서 7시부터 시작이었다.
피로가 누적되어 제대로 된 집중은 크게 못한 것 같고 테스트 코드 관련해서 튜터님께 질문 갔었던 1시간이 가장 몰입한 시간인 것 같다.
- 오늘의 생각
디버그.. 이런 멋있고 좋은 걸 나는 도대체 무슨 생각으로 사용도 안하고
그냥 에러 코드만 보고 있었던거지... 과거의 나! 반성 중....... 🙇♀️🙇♂️
그리고 내일의 학습도 적고보니 드는 생각은 내 진도가 상당히 느린 것 같다ㅠ
- 내일 학습할 것은 무엇인지
일단 개인과제 수정하던 거 마저 수정하고!
그래서 시간 지나고 다시 생각하니 2번은 우예 해야 하는거지..
내일 오전 회의 후 다른 튜터님께 한 번 더 질문하러 가야겠다.
그러고 repository는 지금 조금 더 하면 될 것도 같고..?
개인과제는 QueryDSL을 위주로 변경하는 게 목표다! 필수는 재제출 때까지 다시 해봐야겠어.
면접 준비는 아직까지 못했다... 더더더 열심히해야되는데ㅜ 열심히 놀았지ㅎ