Mockito에서 결과 캡터 생성 및 사용
Today I will show you how to create a Mockito captor
Mockito에는 ArgumentCaptor을 사용하여 개발자가 모의 메서드 호출 중에 사용된 인수를 확인할 수 있지만 결과 자체는 확인할 수 없습니다.
사실, Mockito의 현재 릴리스에서는 그것을 캡처하는 것이 불가능하며 이를 수행하는 내 솔루션은 Answer 인터페이스를 구현하는 ResultCaptor 클래스를 빌드하고 더 많은 편의를 위해 생성하는 것입니다.
한 번 보자.
ResultCaptor 클래스 생성
public static class ResultCaptor<T> implements Answer<T> {
private T result = null;
public T getResult() {
return result;
}
@Override
public T answer(InvocationOnMock invocationOnMock) throws Throwable {
//noinspection unchecked
result = (T) invocationOnMock.callRealMethod();
return result;
}
}
이 매우 간단한 구현에서 우리는 ResultCaptor 클래스가 응답 메서드를 강제로 재정의하는 Answer 인터페이스를 구현하는 것을 볼 수 있습니다. 우리는 이 "인터셉터"를 사용하여 스파이 빈의 실제 메서드를 호출하고 결과를 캡처하여 현재 컨텍스트에 저장합니다.
ResultCaptor 클래스 사용
ResultCaptor<ServiceResult> serviceResultCaptor = new ResultCaptor<>();
var message = new Message("id", "hello all!");
doAnswer(serviceResultCaptor).when(serviceSpy).sendMessage(message);
// do the call
var serviceResult = serviceResultCaptor.getResult();
assertThat(serviceResult).isNotNull();
assertThat(serviceResult.getWhatever()).isEqualTo("Whatever");
그리고 그게 다야 !
내가 그것을 시도하자
Spring 부트 예제를 원하는 경우 저장소를 복제할 수 있습니다github.com/ulrich/mockito-result-captor-demo.
신용 사진 : https://pixabay.com/fr/users/jackmac34-483877/
Reference
이 문제에 관하여(Mockito에서 결과 캡터 생성 및 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ulrich/create-and-use-a-result-captor-in-mockito-1l9i텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)