首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >EasyMock对空方法的期望

EasyMock对空方法的期望
EN

Stack Overflow用户
提问于 2012-12-17 23:44:46
回答 2查看 64.7K关注 0票数 23

我正在使用EasyMock做一些单元测试,但我不了解EasyMock.expectLastCall()的用法。正如您在下面的代码中看到的,我有一个对象,它的方法返回void,在其他对象的方法中调用。我认为我必须让EasyMock期待该方法调用,但我尝试注释掉expectLastCall()调用,它仍然有效。是因为我传递了EasyMock.anyObject()),它才将其注册为预期的调用,还是发生了其他事情?

代码语言:javascript
复制
MyObject obj = EasyMock.createMock(MyObject.class);
MySomething something = EasyMock.createMock(MySomething.class);
EasyMock.expect(obj.methodThatReturnsSomething()).andReturn(something);

obj.methodThatReturnsVoid(EasyMock.<String>anyObject());

// whether I comment this out or not, it works
EasyMock.expectLastCall();

EasyMock.replay(obj);

// This method calls the obj.methodThatReturnsVoid()
someOtherObject.method(obj);

关于expectLastCall(),EasyMock的API文档是这样描述的:

代码语言:javascript
复制
Returns the expectation setter for the last expected invocation in the current thread. This method is used for expected invocations on void methods.
EN

回答 2

Stack Overflow用户

发布于 2014-04-29 14:13:04

只有当您需要进一步验证“该方法是否已被调用。(与设置期望相同)”之外的任何内容时,才需要EasyMock.expectLastCall();

假设您想要验证该方法被调用了多少次,那么您将添加以下任一项:

代码语言:javascript
复制
EasyMock.expectLastCall().once();
EasyMock.expectLastCall().atLeastOnce();
EasyMock.expectLastCall().anyTimes();

或者说你想抛出一个异常

代码语言:javascript
复制
EasyMock.expectLastCall().andThrow()

如果你不在乎,那么EasyMock.expectLastCall();就不是必需的,也不会有任何不同,你的语句"obj.methodThatReturnsVoid(EasyMock.<String>anyObject());"就足以设置期望。

票数 3
EN

Stack Overflow用户

发布于 2016-08-17 04:45:41

您缺少EasyMock.verify(..)

代码语言:javascript
复制
MyObject obj = EasyMock.createMock(MyObject.class);
MySomething something = EasyMock.createMock(MySomething.class);
EasyMock.expect(obj.methodThatReturnsSomething()).andReturn(something);

obj.methodThatReturnsVoid(EasyMock.<String>anyObject());

// whether I comment this out or not, it works
EasyMock.expectLastCall();

EasyMock.replay(obj);

// This method calls the obj.methodThatReturnsVoid()
someOtherObject.method(obj);

// verify that your method was called
EasyMock.verify(obj);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13917312

复制
相关文章

相似问题

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