Java 使用Mockito';匹配器导致的参数;类型“”的方法不明确;错误

Java 使用Mockito';匹配器导致的参数;类型“”的方法不明确;错误,java,unit-testing,junit,mockito,hamcrest,Java,Unit Testing,Junit,Mockito,Hamcrest,我试图模拟一个方法,该方法使用一个映射和一些其他参数作为参数。我的目标是匹配地图条目。 最初,我将我的模拟定义为: when(discoveryJobCatalogResourceAccessor.findResource(argThat(allOf(hasEntry("start", "testStart"), hasEntry("level", "testLevel"))), any(Integer.class), any(Integer.class), any(St

我试图模拟一个方法,该方法使用一个映射和一些其他参数作为参数。我的目标是匹配地图条目。 最初,我将我的模拟定义为:

when(discoveryJobCatalogResourceAccessor.findResource(argThat(allOf(hasEntry("start", "testStart"), hasEntry("level", "testLevel"))), any(Integer.class),
            any(Integer.class), any(String.class), any(String.class))).thenReturn(searchResponse);
这会导致以下错误:

"The method findResource(Map<String,String>, Integer, Integer, String, String) is ambiguous for the type DiscoveryJobCatalogResourceAccessor"

错误消失了,但在这种情况下,我无法匹配贴图值。似乎Mockito的
arg导致了歧义。我想知道是否有一种方法可以使用
arg而不会导致错误?

您可以强制转换为所需的类型

when(discoveryJobCatalogResourceAccessor.findResource(HashMap<String,String>)argThat(allOf(hasEntry("start", "testStart"), hasEntry("level", "testLevel"))), any(Integer.class),
            any(Integer.class), any(String.class), any(String.class))).thenReturn(searchResponse);
when(discoveryJobCatalogResourceAccessor.findResource(HashMap)argThat(allOf(hasEntry(“开始”、“测试开始”)、hasEntry(“级别”、“测试级别”))、any(Integer.class),
any(Integer.class)、any(String.class)、any(String.class))。然后返回(searchResponse);

@MrkK别忘了将其标记为已接受。如果你是新来的,不知道如何接受答案,请阅读
when(discoveryJobCatalogResourceAccessor.findResource(HashMap<String,String>)argThat(allOf(hasEntry("start", "testStart"), hasEntry("level", "testLevel"))), any(Integer.class),
            any(Integer.class), any(String.class), any(String.class))).thenReturn(searchResponse);