简体   繁体   English

Mockito 不明确的方法调用

[英]Mockito ambiguous method call

I'm trying to stub out a method call, eg我正在尝试排除一个方法调用,例如

when(amazonDynamoDBClient.batchWriteItem(anyObject())).thenReturn(batchWriteItemResultMock);

I get this error我收到这个错误

Error:(198, 34) java: reference to batchWriteItem is ambiguous
  both method batchWriteItem(com.amazonaws.services.dynamodbv2.model.BatchWriteItemRequest) in com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient and method batchWriteItem(java.util.Map<java.lang.String,java.util.List<com.amazonaws.services.dynamodbv2.model.WriteRequest>>) in com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient match

I can't see how this is ambiguous - the method signatures are different, ie我看不出这是如何模棱两可的 - 方法签名是不同的,即

public BatchWriteItemResult batchWriteItem(BatchWriteItemRequest request) {

and

public BatchWriteItemResult batchWriteItem(Map<String, List<WriteRequest>> requestItems) {

What am I doing wrong here?我在这里做错了什么?

You have two methods with the same name and return type, each with one parameter.您有两个具有相同名称和返回类型的方法,每个方法都有一个参数。 So anyObject() matches both of them.所以anyObject()匹配他们两个。 That's why you get the batchWriteItem is ambiguous message.这就是为什么您会收到batchWriteItem is ambiguous消息。

You could use Mockito.any(Class<T> type) and Mockito.anyMapOf(Class<K> keyClazz, Class<V> valueClazz) to distinguish between them.您可以使用Mockito.any(Class<T> type)Mockito.anyMapOf(Class<K> keyClazz, Class<V> valueClazz)来区分它们。

Docs for reference: any , anyMapOf参考文档: any , anyMapOf

For me, using isA() fixed the issue.对我来说,使用isA()解决了这个问题。

Docs : IsA文档: IsA

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM