Java Easymock:matcher调用的使用超出了预期

Java Easymock:matcher调用的使用超出了预期,java,unit-testing,junit,easymock,Java,Unit Testing,Junit,Easymock,我将代码中某个方法的返回值从void更改为和Object。 然后两个junit测试失败,说明缺少一个expect(…).andReturn(…)。添加这些测试后,一个测试已修复,另一个仍然抛出一个异常,这似乎有点奇怪: java.lang.IllegalStateException:使用了超出预期的matcher调用 适用于其中一个但不适用于另一个的代码是: expect(myMock.foo(1l,FooEnum.A)).andReturn(EasyMock.anyObject(String.

我将代码中某个方法的返回值从
void
更改为和
Object
。 然后两个junit测试失败,说明缺少一个
expect(…).andReturn(…)
。添加这些测试后,一个测试已修复,另一个仍然抛出一个异常,这似乎有点奇怪:

java.lang.IllegalStateException:使用了超出预期的matcher调用

适用于其中一个但不适用于另一个的代码是:

expect(myMock.foo(1l,FooEnum.A)).andReturn(EasyMock.anyObject(String.class));
有什么想法吗?

我把代码改为

expect(myMock.foo(1l,FooEnum.A)).andReturn(new Object());
现在它开始工作了。我为什么会出现这个错误仍然很奇怪,因为我肯定会返回一个
新对象
(而不是
null
或任何东西)

EasyMock。任何对象(String.class)
都是匹配器,它不是
字符串
,不能用作
字符串
,除非进行匹配-匹配如下所示:

when(foo.bar(EasyMock.anyObject(String.class))).thenReturn("foo-bar")

注意:尽可能避免使用
新字符串()
;使用
总是更好。

我对
AmazonSQSClient
对象也有同样的问题。我尝试了
.andReturn(new Object())
,但得到了一个不兼容的类型错误。要解决此问题,只需返回方法所需类型的新对象:

expect(amazonSQSClient.getQueueAttributes(queueUrl,attributeName)).andReturn(新的GetQueueAttributesResult());

when()不是Mockito方法而不是easymock方法吗?是的,它是Mockito,我想easymock中有一个等价的方法