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中有一个等价的方法