https://github.com/KTCrack01/api-messaging-svc/blob/main/src/test/java/com/kt/api_messaging_svc/service/MessageServiceTest.java
이 테스트가 보장하는 것
- 비즈니스 불변식 검증: 수신자 N명 → 저장 N회, 대시보드 호출 N회가 항상 성립함.
- 장애 격리 로직 확인: 중간 실패가 나머지 전송/대시보드 흐름을 막지 않음.
- 계약 유지: DashboardApiClient로 즉시 이벤트 전송한다는 “실시간 대시보드”의 핵심 계약을 코드 레벨에서 보증.
✅ 테스트: shouldSendAndPersistAndPushDashboard_successBulk
목적
여러 수신자 전송이 모두 성공할 때,
- 부모 메시지 1회 저장
- 수신자별 MessageRecipient 저장 N회
- 대시보드 전송 N회가 정확히 발생하는지 검증
시나리오 (Given–When–Then)
- Given: Twilio 정적 호출을 Mock → 항상 성공 SID(SM1234567890) 반환
- When: sendManyMessage("[email protected]", "hello", 3명) 호출
- Then:
- messageRepository.save(...) 1회 호출
- messageRecipientRepository.save(...) 3회 호출
- dashboardApiClient.sendDashboardData(...) 3회 호출
- 반환된 Messages 객체 Not Null
핵심 검증 포인트
- 대시보드 연동: “성공” 이벤트가 수신자 수만큼 즉시 전송됨
- 데이터 일관성: 저장(Repository) ↔ 대시보드 호출 횟수 1:N 일치
근거 / 로그