Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 莫基托';检测到放错位置的参数';“内部错误”;什么时候;方法_Java_Unit Testing_Amazon S3_Mockito - Fatal编程技术网

Java 莫基托';检测到放错位置的参数';“内部错误”;什么时候;方法

Java 莫基托';检测到放错位置的参数';“内部错误”;什么时候;方法,java,unit-testing,amazon-s3,mockito,Java,Unit Testing,Amazon S3,Mockito,我试图模拟对spy对象的调用,并不断得到org.mockito.exceptions.misusing.invalidUseofMatcherException 方法调用模拟如下所示: @Spy private AmazonS3Client m_clientToMockServer; // (...) Mockito.when(m_clientToMockServer.listObjects(Mockito.anyString(), Mockito.anyString()))

我试图模拟对spy对象的调用,并不断得到
org.mockito.exceptions.misusing.invalidUseofMatcherException

方法调用模拟如下所示:

@Spy
private AmazonS3Client m_clientToMockServer;

// (...)

Mockito.when(m_clientToMockServer.listObjects(Mockito.anyString(), Mockito.anyString()))
            .thenAnswer((Answer<ObjectListing>) invocation -> {
                ObjectListing objectListing = (ObjectListing) invocation.callRealMethod();
                objectListing.setMaxKeys(2);
                return objectListing;
            });
此外,此错误可能会出现,因为您将参数匹配器用于 无法模拟的方法。不能使用以下方法 存根/验证:final/private/equals()/hashCode()。模拟方法 不支持在非公共父类上声明


我已经检查了
amazon3client.listObjects(String,String)
不是final也不是private,所以我只能想象我可能实际上使用了错误的参数匹配。事实上,如果我使用任何其他实际字符串而不是
Mockito.anyString()
matchers,则此代码段可以工作。

doReturn().when()。。。你能提供尽可能最小的完整类来重现这个问题,而不仅仅是一个片段吗?@JBNizet解决了这个问题。引用他提供的链接的重要部分:有时使用when(Object)来对付间谍是不可能或不切实际的。因此,在使用间谍时,请考虑DeleTurn回答“Sun”()一系列的方法。
when(mock.get(anyInt())).thenReturn(null);
doThrow(new RuntimeException()).when(mock).someVoidMethod(anyObject());
verify(mock).someMethod(contains("foo"))