Mockito.any()通过与generics接口
是否有可能通过genericstypes的接口?
界面:
public interface AsyncCallback<T>
在我的testing方法中:
Mockito.any(AsyncCallback.class)
把<ResponseX>
放在后面或者.class
没有工作。
有一种types安全的方法:使用ArgumentMatchers.any()
并使用types进行限定:
ArgumentMatchers.<AsyncCallback<ResponseX>>any()
作为评论中提到的pierrefevrier,与新版本的Mockito它是
Matchers.<AsyncCallback<ResponseX>>any()
使用Java 8,你可以简单地使用any()
(假设静态导入),因为增强的types推断没有参数或types参数。 编译器现在从目标types(方法参数的types)知道你实际上是指Matchers.<AsyncCallback<ResponseX>>any()
,这是Java 8以前的解决scheme。
我不得不采取以下机制来考虑仿制药:
import static org.mockito.Matchers.any; List<String> list = any(); when(callMyMethod.getResult(list)).thenReturn(myResultString);
希望这有助于某人。
发表pierrefevrier评论作为答案,如果它出现在答案,而不是评论可能是有用的。
新版本的Mockito: (Matchers.<AsyncCallback<ResponseX>>any()
Matchers (Matchers.<AsyncCallback<ResponseX>>any()
你可以投它,如果你喜欢join压制警告:
@SuppressWarnings("unchecked") AsyncCallback<ResponseX> callback = Mockito.any(AsyncCallback.class)
如果Java允许“generics”generics,他们可以有这样的方法,这就是你正在寻找的
private static <T, E> T<E> mock(Class<T<E>> clazz)
进一步thSoft的答案把合格的调用任何()在方法意味着我可以删除资格,因为返回types允许推断:
private HashMap<String, String> anyStringStringHashMap() { return Matchers.any(); }