답변:
형식에 안전한 방법이 있습니다. 다음 ArgumentMatchers.any()
과 같이 형식을 사용 하고 정규화하십시오.
ArgumentMatchers.<AsyncCallback<ResponseX>>any()
(Matchers.<AsyncCallback<ResponseX>>any()
Matchers
실제로는 더 이상 사용되지 않지만 ArgumentMatchers
작동했습니다.
Java 8을 사용 any()
하면 향상된 유형 유추로 인해 인수 또는 유형 매개 변수없이 간단하게 정적 가져 오기 를 사용할 수 있습니다 . 컴파일러는 이제 대상 유형 (메소드 인수의 유형)에서 실제로 의미하는 것을 알았습니다 Matchers.<AsyncCallback<ResponseX>>any()
. 이것은 Java 8 이전의 솔루션입니다.
any()
일치 하지 AsyncCallback<AnyOtherType>
않습니까?
AsyncCallback<AnyOtherType>
인수 유형이 'AsyncCallback <ResponseX>'인 경우 Using 를 컴파일하지 않아야합니다.
when(x.y(any())).thenAnswer(...)
, 예를 들면 곳이 y
있다 public <T> T y(AsyncCallback<T> arg)
. 아마도 필요한 경우 대답의 유형을 확인하는 것이 좋습니다.
isA()
. 객체가 Class
유형에 해당하는 객체를 보유하고 인터페이스가 이것을 노출하면 사용자 정의 매처에서 확인할 수 있습니다. 또는 예를 들어 Collection
요소의 유형을 확인할 수 있습니다.
Matchers
대체되었다 ArgumentMatchers
Mockito v2의에
제네릭을 허용하려면 다음과 같은 메커니즘을 채택해야했습니다.
import static org.mockito.Matchers.any;
List<String> list = any();
when(callMyMethod.getResult(list)).thenReturn(myResultString);
이것이 누군가를 돕기를 바랍니다.
원하는 경우 억제 경고를 추가하여 캐스트 할 수 있습니다.
@SuppressWarnings("unchecked")
AsyncCallback<ResponseX> callback = Mockito.any(AsyncCallback.class)
Java가 'generic'제네릭을 허용하면 다음과 같은 방법을 사용할 수 있습니다.
private static <T, E> T<E> mock(Class<T<E>> clazz)
You cannot use argument matchers outside of verification or stubbing.
@SuppressWarnings
: pre-java 8, 별도의 변수에 할당하려는 경우 any()
INtoy의 답변과 같이 사용할 수 있습니다 . 이제 Java 8에서는 any()
별도의 할당없이 인라인으로 사용할 수 있습니다.