首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用easymock接收到错误

使用easymock接收到错误
EN

Stack Overflow用户
提问于 2012-08-31 04:57:45
回答 3查看 1.6K关注 0票数 5

我正在做一个新项目,他们一直在使用EasyMock (v2.4),我对它不是很熟悉。我需要能够做以下事情,但是没有人知道答案。当前的框架使用了一个BaseDao.class,我想根据下面的例子来模拟它,但我得到了一个错误。我在寻找方向。

代码语言:javascript
复制
BaseDao baseDao = EasyMock.mock(BaseDao.class);

EasyMock.expect(baseDao.findByNamedQuery("abc.query"), EasyMock.anyLong()).andReturn(...);
EasyMock.replay(baseDao);

EasyMock.expect(baseDao.findByNamedQuery("def.query"), EasyMock.anyLong).andReturn(..);
EasyMock.replay(baseDao);

我得到的错误如下所示...

代码语言:javascript
复制
java.lang.AssertionError: 
  Unexpected method call findByNamedQuery("def.query"):
    findByNamedQuery("abc.query", 1): expected: 1, actual: 0
at org.easymock.internal.MockInvocationHandler.invoke(MockInvocationHandler.java:32)
at org.easymock.internal.ObjectMethodsFilter.invoke(ObjectMethodsFilter.java:61)
at $Proxy5.findByNamedQuery(Unknown Source)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-31 05:46:43

您定义了两次replay(...),因此只有第一个会被计算在内。它是这样定义的,直到你调用reset(...)

要解决此问题,您可以执行以下任一操作:

1)删除导致测试失败的调用:

代码语言:javascript
复制
EasyMock.expecting(baseDao.findByNamedQuery("def.query"), EasyMock.anyLong)
   .andReturn(...);
EasyMock.replay(baseDao);

2)你可以期待任何字符串,而不是在期望中定义一个固定的字符串:

代码语言:javascript
复制
EasyMock.expecting(baseDao.findByNamedQuery((String)EasyMock.anyObject()), 
   EasyMock.anyLong).andReturn(...);
票数 1
EN

Stack Overflow用户

发布于 2012-08-31 05:11:37

看起来测试需要一个带有参数"abc.query“的方法调用,但是用"def.query”调用了这个方法。

一步一步地调试测试应该有助于发现问题。

票数 0
EN

Stack Overflow用户

发布于 2012-08-31 05:56:03

如果您希望findByNamedQuery被调用两次,则删除对replay方法的第一次调用。它只需要一次,在你对测试的所有期望都已经设置好之后。

代码语言:javascript
复制
BaseDao baseDao = EasyMock.mock(BaseDao.class);

EasyMock.expect(baseDao.findByNamedQuery("abc.query"), EasyMock.anyLong()).andReturn(...);
// Remove EasyMock.replay(baseDao);

EasyMock.expect(baseDao.findByNamedQuery("def.query"), EasyMock.anyLong).andReturn(..);
EasyMock.replay(baseDao);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12205402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档