❗void 메서드 테스트에서 ArgumentCaptor로 값 검증하기
ArgumentCaptor 는 메서드가 실제로 호출될 때 전달된 인자(argument)를 캡처한다.public class MessageService {
public void send(String to, String content) {
//문자 보내는 기능
}
}
MessageService service = mock(MessageService.class);
// 테스트 대상 실행
service.send("010-1234-5678", "hello");
// 호출 여부만 검증
verify(service).send(anyString(), anyString()); // → 호출은 됐는지 확인 OK
MessageService service = mock(MessageService.class);
// 1. 테스트 실행
service.send("010-1234-5678", "hello");
// 2. captor 생성
ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
// 3. 두 개의 인자를 각각 캡처
verify(service).send(captor .capture(), captor .capture());
// 4. 꺼내서 검증
List<String> args = captor .getAllValues();
String to = args.get(0);
String content = args.get(1);
// to → 010-1234-5678
// content → hello
captor 생성 → 해당 인자의 타입으로 생성(여기서는 String)ArgumentCaptor가 이 두 값을 캡쳐getValue() 또는 getAllValues()로 꺼내서 확인publishEvent), 알림 전송, 로그 저장 등