Skip to content

Test: commentService Test 작성, Service 로직 수정#148

Merged
SinnoLn merged 3 commits intomainfrom
test
Jun 18, 2025
Merged

Test: commentService Test 작성, Service 로직 수정#148
SinnoLn merged 3 commits intomainfrom
test

Conversation

@SinnoLn
Copy link
Contributor

@SinnoLn SinnoLn commented Jun 18, 2025

변경 내용

  1. CommentService

    • addComment
      • post.getComments().add(comment)로 Post‑Comment 컬렉션 동기화
      • basePostPersistencePort.save(post) 제거 → Managed 상태 자동 flush
    • deleteComment
      • 부모·자식 댓글 일괄 삭제 후
        post.getComments().removeAll(children) / remove(comment) 로 참조 제거
      • Post commentCount 감소 후 별도 merge 없이 트랜잭션 flush에 맡김
        ObjectDeletedException 근본 해결
  2. CommentServiceTest

    • 서비스 메서드만 사용해 댓글/대댓글을 생성하는 통합 테스트로 전면 재작성
    • 삭제‑cascade, 알림 발송, 권한 예외 등 핵심 시나리오 보강
    • flush() + clear() 및 ID 기반 검증으로 테스트 안정성 향상
    • times(1)·eq(...) 제거 → Mockito 호출 단순화

문제점 & 해결

  • 버그: 댓글 삭제 후 post를 merge할 때 이미 REMOVED 된 객체가 cascade‑merge 되어
    ObjectDeletedException 이 간헐적으로 발생.
  • 해결:
    • 양방향 컬렉션을 수동 동기화해 REMOVED 인스턴스를 컬렉션에서 제거
    • Managed 엔티티를 다시 merge 하지 않아도 되도록 로직 단순화
    • 전용 테스트 케이스로 회귀 방지

SinnoLn added 3 commits June 13, 2025 15:46
•	addComment
•	저장 직후 post.getComments().add(comment) 추가해 Post-Comment 컬렉션 일관성 확보
•	basePostPersistencePort.save(post) 삭제 – Managed 상태이므로 자동 flush
•	deleteComment
•	자식·부모 댓글 삭제 후 컬렉션에서 removeAll / remove 로 참조 제거
•	댓글 수 감소 후 post 저장 호출 제거 → ObjectDeletedException 발생 원인 해소
•	서비스 메서드로만 댓글/대댓글 생성해 실제 동선 그대로 재현
•	flush + clear 및 ID 기반 단정으로 삭제-cascade 안정적으로 확인
•	알림 호출(NotificationUseCase.create)·권한 예외·카운터 갱신 등 핵심 시나리오 추가
•	Mock 설정 최소화, 테스트 가독성 향상을 위해 픽스처 재구성
@SinnoLn SinnoLn self-assigned this Jun 18, 2025
@SinnoLn SinnoLn merged commit fb71ce7 into main Jun 18, 2025
4 checks passed
@SinnoLn SinnoLn changed the title Test: commentService Test 작성, Test코드 추가 Test: commentService Test 작성, Service 로직 수정 Jun 18, 2025
@SinnoLn SinnoLn deleted the test branch June 20, 2025 22:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant