2023. 11. 2. 20:38ㆍProject 해축갤/테스트 코드
위는 다 작성된 테스트 코드입니다.
중간에 오늘의 주제가 있는 데 바로 doNothing입니다.
해축갤 프로젝트에서 댓글 생성을 담당하는 Controller의 API 슬라이스 테스트 코드를 작성 중에 쓴 글입니다.
이 함수는 dto를 파라미터로 넘겨받아 Entity 객체로 전환 후,
이를 repository를 통해서 save 하는 함수입니다.
CommentService는 Mock 객체이기 때문에
사실할 이유가 없어도 무방하지만 그래도 하는 게 좋은 이유가 있습니다.
CommentService의 메서드는 언젠가 변경이 있을 수 있다.
CommentService 의 메서드는 언젠가 변경 가능하다
Mock 객체이기 때문에 side-effect 가 없다고 해도 무방하기에,
지금 상황에서는 doNothing 처리가 필요가 없긴 합니다.
"지금 상황에서는" 말이죠.
제 해축갤 프로젝트는 학습용 사이드 프로젝트이지만,
단순히 CRUD를 구현하고 끝날 프로젝트가 아니라 추후 이런저런 기술들을 갖다 붙일 키메라 프로젝트 이기도 합니다.
모든 것들이 언젠가 변경이 일어날 수 있다는 거죠.
즉 addComment 도 언젠가 변경이 일어날 수 있고
언젠가는 예외를 던지는 함수로도 변경이 가능할 수도 있습니다.
제가 예전 글에서 이렇게 말한 바 있습니다.
'귀차니즘'이 많은 개발자냐고요?
네! 그거 잘못된 거 아니냐고요?
는 장난입니다만, 사실 진짜 알빠노이긴 합니다.
코래블러 ( ??? ~ )
[출처] : https://xpmxf4.tistory.com/68
전 필요하고 재밌는 일은 하겠지만 그 외에 불필요한, 의미 없는 노동은 할 생각이 없습니다.
즉, 최대한 컴포넌트 간의 변경에 대해서 서로가 영향을 최대한 안 받도록 코드를 짜는 것이
저의 희망사항을 지켜줄 수 있겠죠.
따라서 doNothing 은 먼 미래에 나를 위한 코드의 사용이다!
라고 말할 수 있겠습니다.
결론
슬라이스 테스트 시에는 최대한 결합도를 낮게 하자!!
그 방법 중 하나는 doNothing처럼 side-effect를 최대한 줄이자!
'Project 해축갤 > 테스트 코드' 카테고리의 다른 글
Hibernate의 "Detached Entity Passed to Persist" 오류 이해와 해결 (0) | 2023.11.08 |
---|---|
org.mockito.exceptions.misusing.UnnecessaryStubbingException 해결 (0) | 2023.11.07 |
테스트를 더 빨리 끝내보기 (feat. 자료구조, singletonList) (0) | 2023.11.02 |
postman 띡띡딸깍 귀찮아서 테스트 코드 짭니다 (0) | 2023.10.31 |
Spring Boot JUnit5 : JPA metamodel must not be empty 에러 솔루션 (0) | 2023.10.31 |