首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >EasyMock andReturn() vs andStubReturn()

EasyMock andReturn() vs andStubReturn()
EN

Stack Overflow用户
提问于 2010-09-18 12:23:05
回答 1查看 34K关注 0票数 56

在EasyMock上使用andReturn(T value)andStubReturn(T value)有什么不同?

andReturn()无法达到相同效果的情况下,您会使用andStubReturn()吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-21 05:21:42

在mock上使用存根返回进行方法调用,您希望发生这种情况,但在其他方面对此并不感兴趣。对于“常规”方法调用,您可以使用常规的返回。

考虑以下方法:

代码语言:javascript
复制
public void someMethod(String arg) {
    if (logger.isDebugEnabled()) {
        logger.debug("Calling doSomething() on service " 
                       + service.getName().hashCode());
    }

    service.postMessage("{" + arg + "}");

    if (logger.isDebugEnabled()) {
        logger.info("Finished calling doSomething() on service " 
                      + service.getName().hashCode());
    }
}

...where service是一个可模拟的字段。日志语句中的hashCode()是人为设计的,但关键是您的mock需要响应对getName()的任意数量的调用以避免NPE,而您不能以其他方式不关心它。

在为该方法编写基于EasyMock的单元测试时,您将andStubReturn()getName()的调用,并使用普通的andReturn()来调用postMessage(String)。当您验证模拟对象时,它只会考虑后者,并且如果您更改了log4j配置,测试也不会中断。

票数 58
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3740376

复制
相关文章

相似问题

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