인스타 릴스, 유튜브 쇼츠, 틱톡.. 딱히 보고 싶지 않은 영상들에 지치지 않으셨나요?
🏖️ 그렇다면 혹시 여행과 관련된 주제만 골라서 보고싶지 않으신가요? 🏖️
🤩 특별했던 장면을 공유하며 다음을 기약하고, 다른 사람들이 포착한 순간을 시청하며 나만의 여행을 꿈꿔보세요 🤩
🟢 운영중 - Play Store / App Store
김세영 | 천진우 |
---|---|
- Release: 운영 서버에 배포
- Develop: 개발 서버에 배포
- Feature: 기능 개발
- Issue 생성
- feature 개발
- Pull Request
- 리뷰
- Squash Merge
Rest Docs 를 활용합니다.
컨트롤러 통합 테스트 -> ActionResult 를 DocumentGenerator.java(Util 클래스)에 추상화.
[9.1 수정] 기존 테스트들은 사실상 재사용 불가능하며 가독성이 좋지 않은 테스트라서, 모든 테스트를 다음 규칙으로 재작성합니다.
단, 리팩토링 이후에 기존 테스트도 잘 돌아가야하며, 최종 확인 이후 PR 직전에 삭제합니다.
- 시나리오 기반 테스트로 중복 최소화하고 가독성을 가져가기
- Rest Docs Test, JUnit(AssertJ) 활용
- 다음 테스트코드 작성 기준을 준수하기
- Presentation Layer: Rest Docs, Integration Test, Only Happy Test
- Application Layer: Unit Test, Happy Test, Fail Test
- Domain Layer: Unit Test, Happy Test, Fail Test
- Query: 직접 정의한 쿼리 Happy Test
도메인 객체와 엔티티 객체를 구분하게 되면서, 다음 고민들을 하게 되었습니다.
도메인 객체의 생성자 공개를 최소화
엔티티 객체를 개발자가 직접 생성하지 못하도록 제한
Mapper 클래스를 통해 도메인 객체와 엔티티 객체의 자유로운 매핑
- 🔗 Mapper 클래스 예시
그래서 고민하고 적용한 규칙은 다음과 같습니다
- 🔗 도메인 객체 예시
- 실제 도메인 데이터
create
를 위해서만 생성자를 제공합니다. - 도메인 객체 생성 시에 Spring boot Assert 로 값을 검증합니다.
- Mapper를 위해 정적 팩토리 메소드 'forMapper'를 제공합니다.
- 🔗 엔티티 객체 예시
- 오직 Mapper를 위한 생성자만 존재합니다. (개발자가 엔티티 객체를 직접 생성하지 못하게 제한합니다.)
- 엔티티를 직접 생성할 수 없도록 해당 생성자를 default 접근제어자로 설정했습니다.
- User 엔티티의 생성자는 테스트 편의를 위해
@VisibleForTesting
를 적용한 생성자를 적용했습니다.