[connectravel] Accommodation Service 개선: TDD 방식으로 조회 및 수정 기능 구현

myminimin·2023년 11월 1일
0

toyproject

목록 보기
17/17
post-thumbnail

내용:

  • 조회 기능 개선
  1. 숙박업소의 상세 정보를 조회할 때, 옵션과 이미지 정보까지 함께 가져올 수 있도록 로직을 개선
  2. AccommodationService의 getAccommodationDetails() 메서드를 통해 AccommodationDTO를 반환받게 되며, 이 DTO에는 숙박업소의 기본 정보 뿐만 아니라 옵션 정보 (OptionDTO) 및 이미지 정보 (ImgDTO)도 포함
  • 수정 기능 개선
    : 숙박업소의 상세 정보 수정 기능도 TDD 방식으로 구현하여 기능의 안정성을 확보

과정:

  • TDD 방식의 구현
  1. 처음에는 테스트 케이스를 설계하여 실패하는 테스트를 작성
  2. 실제 로직을 구현하여 테스트가 통과하도록 만듦
  3. 테스트 케이스를 통해 로직의 정확성을 지속적으로 검증하며 개발 진행
  • DTO 변환 로직
  1. 숙박업소의 상세 정보, 이미지, 옵션 정보를 한번에 가져오기 위해 DTO 변환 로직을 개선
  2. AccommodationDTO는 숙박업소의 기본 정보 외에도 OptionDTO와 ImgDTO의 리스트를 포함하도록 설계
  3. 조회 로직에서는 숙박업소 엔티티 (Accommodation)를 AccommodationDTO로 변환하는 과정에서 필요한 이미지와 옵션 정보도 함께 변환하여 DTO에 저장했습니다.

깨달은 점:

  • Lombok의 편리함과 주의점
    : Lombok의 @AllArgsConstructor 어노테이션을 사용하면 생성자의 매개변수를 자동으로 생성할 수 있는데 이때 필드 선언 순서에 따라 생성자의 매개변수 순서가 결정되므로 주의가 필요하다!!! 이번 개발에서 OptionDTO의 필드 순서 때문에 값이 바뀌는 문제가 발생했었다!
  • TDD의 중요성
    : TDD 방식을 통해 기능을 구현하면서 로직의 안정성을 지속적으로 검증할 수 있었다!
    특히 복잡한 로직이나 여러 개의 관련 정보를 함께 처리해야 할 때, TDD는 버그 발생 가능성을 줄여주며, 리팩토링에도 큰 도움이 되었다.

TDD 방식으로 구현을 하지 않았다면 처음에 Accommodation에서 Member를 받아올 때 null 값이 뜨고있었다는 것도 몰랐을 것이다. 또한, OptionDTO에서 필드 순서 때문에 값이 바뀌어서 들어오는 문제도 미리 발견하지 못했을 것...

0개의 댓글