有两种方法:
- 简单地强制转换
any()
作为一个足够的类型提示:
Mockito.doReturn("1")
.when(classMock)
.name(eq(1), (List<List<String>>) any());
- 向
anyList()
. 这与下面的答案
基本相同,只是在使用别名时更简洁一点,它映射到实现。Mockito
ArgumentMatcher
Mockito.doReturn("1")
.when(classMock)
.name(eq(1), Mockito.<List<String>> anyList());
两者之间存在细微但显着的差异。想象一下name()
有以下两个重载:
// Overload A (target of this test)
String name(int id, Object entities) {...}
// Overload B (not targeted in this test)
String name(int id, List<CustomMapImpl> entities) {...}
当第二个参数出现null
在被测代码中时,方法 1. 也将正确匹配重载 A,而方法 2.将解析为重载B。为了将特定情况与泛型匹配,需要使用不同的 ArgumentMatcher 显式定义:
Mockito.doReturn(null)
.when(classMock)
.name(eq(1), Mockito.<List<List<String>>>isNull());