Mockito模糊的方法调用

Bac*_*con 6 java junit mockito

我正在尝试删除一个方法调用,例如

when(amazonDynamoDBClient.batchWriteItem(anyObject())).thenReturn(batchWriteItemResultMock);
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

错误:(198,34)java:对batchWriteItem的引用不明确com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient方法batchWriteItem(com.amazonaws.services.dynamodbv2.model.BatchWriteItemRequest)和方法batchWriteItem(java.util.Map> )在com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient匹配中

我看不出这是多么模糊 - 方法签名是不同的,即

public BatchWriteItemResult batchWriteItem(BatchWriteItemRequest request) {
Run Code Online (Sandbox Code Playgroud)

public BatchWriteItemResult batchWriteItem(Map<String, List<WriteRequest>> requestItems) {
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

QBr*_*ute 16

您有两个具有相同名称和返回类型的方法,每个方法都有一个参数.所以anyObject()匹配他们两个.这就是你收到batchWriteItem is ambiguous消息的原因.

您可以使用Mockito.any(Class<T> type)Mockito.anyMapOf(Class<K> keyClazz, Class<V> valueClazz)区分它们.

文档供参考:any,anyMapOf

  • 注意,我之前尝试过 any(BatchWriteItemResult.class) 但遇到了一个未解决的方法问题,这是一个不同的问题 (2认同)