[인프런 워밍업 클럽 2기 클린코드 & 테스트 코드] 4주차 발자국
해당 글은 [인프런 워밍업 클럽 2기 클린 코드 & 테스트 코드]에 참가하여 박우빈님의 <Readable Code: 읽기 좋은 코드를 작성하는 사고법> 강의를 듣고 작성한 글입니다.
✍ 이번주 강의 요약
Spring & JPA 기반 테스트
서비스의 핵심 로직이 있는 Business Layer는 여러 시나리오에 따라 다양하게 테스트를 진행해야 한다.
외부세계의 요청을 가장 먼저 받는 Presentation Layer는 클라이언트로부터 넘겨 받은 값들에 대한 유효성 검증을 수행해야 한다.
Mock을 마주하는 자세
@Mock은 가짜 객체
@MockBean은 스프링 빈으로 등록되는 가짜 객체
@Spy는 실제 객체의 특정 메서드를 모킹, 변경 가능.
@SpyBean은 스프링 빈으로 등록된 실제 객체의 특정 메서드를 모킹, 변경 가능
7 ~ 9.
테스트 코드는 한 문단 당 한 주제를 담자!
독립적이어야 하고 순서가 있으면 안된다.
테스트 코드는 프로덕션 코드의 문서화다.
귀찮음을 이겨내고 제대로 작성해야 한다!
🏃 미션
Day15
사실 강의만 들었을 때는 이해가 잘 안돼서 여기 저기 찾아보고 정리했다. 아직도 완벽한 건 아니고 실제로 내가 프로덕션 코드를 짜고 테스트 코드를 짜야만 완전히 이해할 수 있을 것 같은 느낌이다... ㅜ
Day18
다른 사람이 테스트 코드를 볼때 정말 없어도 되는, 해당 코드가 있든 말든 테스트 코드 자체를 읽는 데는 문제 없는 부분만 setup에 넣어야 한다고 생각해서 준비 내용만 setup으로 뺐는데 좀 더 고민해보니까...
void writeComment() : 댓글 작성
void updateComment() : 댓글 수정
void cannotUpdateCommentWhenUserIsNotWriter() : 타인의 댓글 수정 시도 실패
해당 주제를 파악하는데만 필요한 것들을 given 절에 두고 나머지는 setup으로 빼도 되지 않을까? 댓글 작성이나 댓글 수정은 댓글을 쓰고 수정하는 것이 목적이니까 사용자 생성이나 게시글 생성 같은 것도 setup에 둬도 될 것 같다..
🗒️ 회고
드디어 약 한 달간의 여정이 끝났다. 나 혼자 강의를 수강했다면 훨씬 더 오래 걸렸을텐데 계획이 짜여져 있고 미션을 수행해야하니까 좀 더 빠르게 들을 수 있던 것 같다. 결코 쉬운 과정은 아니었지만... 복습해야하지만... ㅜㅜ 그래도 완강했으니까 뿌듯하다!
아주 조금씩이지만 성장하는 게 느껴진다. 나태해지지 말고 남은 2024년도 열심히 보낼 수 있기를!
마지막으로 좋은 강의를 제작해주신 박우빈님께 감사인사 드립니다.
댓글을 작성해보세요.