본문 바로가기

Programming/TDD Project31

Pull Request 010 - 자유게시글 조회 기능 TDD로 구현해보기 이번에는 게시글 조회 기능이다. 앞서 작성과 수정 기능을 마치고 삭제 기능을 먼저 조회하려 했으나, 수정 기능에서부터 겹쳤던 조회 기능을 모른척 할 수가 없었다. 조회 기능의 로직은 다음과 같다. FreeBoardService#getFreeBoard(long id) 를 통해 조회 명령을 받는다. FreeBoardQueryService#readEntityById(long id) 메서드를 통해 레포지토리에 FreeBoard 엔티티 조회 쿼리를 날린다. 조회한 엔티티 쿼리를 Response DTO로 바꿔 반환한다. 우선 2번에 대한 테스트를 진행해볼 것이다. 먼저 테스트를 진행할 클래스를 생성하고 필요한 필드들을 채우고, 테스트 메서드를 만들었다. class FreeBoardQueryServiceTest { .. 2023. 11. 10.
Pull Request 009 - 자유게시글 수정 기능 TDD로 구현해보기 지난 글까지 자유 게시글 작성 기능을 모두 마쳤다. 이제는 자유게시글의 수정 기능을 구현해보려 한다. 아 그리고 지난 글의 마지막에서 언급했던 설계 수정은 다시 원상복구 했다. 이유는 다음과 같다. 서비스 레이어의 한 클래스는 엔트리 포인트 역할을 담당하긴 해야한다. 그렇지 않으면 컨트롤러와의 의존 관계가 너무 복잡해진다. 결국 컨트롤러와 통신하는 계층과 레파지토리와 통신하는 계층이 나뉘는 형태를 유지한다. 의존관계가 많이 물려 테스트하기 어렵긴 하다. 이 부분은 천천히 고쳐나가보자. 아무튼 자유 게시글의 수정 로직은 다음과 같다. 자유게시글 수정은 FreeBoardCommandService#updateFreeBoard(FreeBoard freeboard, FreeBoardDto.Put putDto);에.. 2023. 11. 9.
Pull Request 008 - 자유게시글 작성 기능 TDD로 구현해보기 - 마무리 이제 모든 과정을 마쳤다. 마지막으로 FreeBoardService#createBoard(); 메서드의 테스트를 완성시킬 단계다. 지난 과정에서 작성해놓았던 테스트 코드와 기능 코드는 다음과 같다. @Test void createBoardTest(){ FreeBoardDto.Post boardPostDto = new FreeBoardDto.Post(); FreeBoardDto.Response boardResponseDto = boardService.createFreeBoard(boardPostDto); assertThat(boardResponseDto).isNull(); } ////////////////////////////////// @Transactional public FreeBoardDto.Res.. 2023. 11. 9.
Pull Request 007 - 자유게시글 작성 기능 TDD로 구현해보기 - @SpringBootTest 제거하기 이전에 작성했던 테스트에서는 Service 계층을 테스트하기 위해 @SpringBootTest 애너테이션을 사용했다. @SpringBootTest애너테이션을 사용해도 우리가 원하는 테스트는 가능하다. 필요한 Bean들이 Spring Container에 생성되어 적절히 주입되고, 기능을 올바르게 테스트 해볼 수 있다. 그러나 Bean이 생성된다는 데에서 문제가 생긴다. 테스트는 F.I.R.S.T원칙을 지키도록 작성해야 한다. 그러나 Bean을 모두 생성하는 것은 첫 번째 원칙인 Fast에 어긋난다. Service 계층만 테스트하고 싶은데, 불필요하게 Repository나 Controller계층의 객체들까지 생성하기 때문에 당연히 시간이 오래 걸린다. 따라서 @SpringBootTest 애너테이션을 제거하고.. 2023. 11. 1.
Pull Request 006 - 자유게시글 작성 기능 TDD로 구현해보기 - 게시글 저장 이전 글에서 dto -> entity 변환 로직의 테스트를 작성하고 기능을 구현해보았다. 이번에는 데이터베이스에 저장이 잘 되는지를 테스트해보고자 한다. 시작에 앞서 Board객체를 전부 FreeBoard로 수정했음을 미리 알린다. 자유 게시판이라는 형식에 맞춰 이름을 바꿔줬다. 게시판은 자유 게시판 이외에도 리뷰 게시판과 구인구직 게시판이 있는데, 해당 게시판들마다 조금씩 다른 차이를 두고 있기에 크게 게시판으로 추상화하고 서로 다른 이름을 붙여 사용하고자 한다. 구인구직 게시판은 '글머리'가 붙는다. 구인 또는 구직을 나눠야 하기 때문이다. 리뷰 게시판은 게시글 내용에 '해당 샵의 정보'가 들어간다. 어느 샵을 리뷰하는지를 게시글을 보는 순간 쉽게 파악하기 위해서다. 이번에 테스트 해 볼 기능은 '게.. 2023. 11. 1.
반응형