[250512] TDD 사고력 훈련 - 3단계 협력 구조에서의 책임 분리와 테스트 설계

1. 오늘의 주제 정리
- 하나의 기능이 아닌, 여러 도메인 간 연결을 다루기 시작
- 게시물 → 댓글 → 신고 흐름을 행위 책임 기반으로 설계
- TDD 관점에서 각각의 도메인에 대해 테스트 단위를 어떻게 나눌지 설계
- 테스트도 설계 대상이며, 중복 제거와 의미 명시가 중요
2. 도메인 간 책임 분리
| 관계 | 방식 | 이유 |
|---|
| 게시물 → 댓글 | PostService가 직접 삭제 | 강한 소유 관계, 한 트랜잭션 내 처리 |
| 댓글 → 신고 | 이벤트 발행 후 삭제 위임 | 약한 연결, 독립적 관리 필요 |
3. 도메인별 테스트 설계 요약
PostServiceTest
- 댓글 삭제 시 DB 삭제 + 이벤트 발행 여부 각각 별도 검증
ReportServiceTest
- 댓글 삭제 이벤트 수신 시 신고 내역 삭제되는지 확인
4. 테스트 구조화 사고 훈련
- 중복되는 요청/객체는 Fixture 클래스로 관리
- 그러나, 의도(예외 케이스)가 다를 경우엔 중복도 허용 → 명확한 테스트 목적 우선
- 테스트도 DRY 적용 대상이지만, 의미 흐림은 피해야 함
5. 오늘 나의 한 줄 정리
테스트도 설계 대상이다. 의미가 분명하다면 중복을 감수하더라도 명확하게 나눈다.