在重构一些旧的单元测试时,我添加了verify()
调用以查看方法的预期次数,并且惊讶地发现“预期”调用大于使用{{1 }}。由于某种原因,下一行的期望调用被添加到我的方法中。
为什么会这样?
测试类
times()
运行时输出
public class SandBoxTest {
@Test
public void shouldGetSand() {
Sand niceMock = EasyMock.createNiceMock(Sand.class);
EasyMock.expect(niceMock.sandMethod()).andReturn(1).times(2);
EasyMock.expect(Box.boxMethod()).andReturn(99).times(11);
EasyMock.replay(niceMock);
EasyMock.verify(niceMock);
}
}
预期的输出
java.lang.AssertionError:
Expectation failure on verify:
Sand.sandMethod(): expected: 13, actual: 0
详细信息: EasyMock v3.1
跟进:使用EasyMock打开功能请求。 https://jira.codehaus.org/browse/EASYMOCK-128
答案 0 :(得分:1)
所以这就是最新消息。
The javadoc for expect()
states
期望(T值) 返回当前线程中最后一次预期调用的期望设置器。
通过这些电话
EasyMock.expect(niceMock.sandMethod()).andReturn(1).times(2);
EasyMock.expect(Box.boxMethod()).andReturn(99).times(11);
在两种情况下,最后一次预期的调用是niceMock.sandMethod()
,因为它是唯一的Mock方法调用,所以它添加了2+11 = 13
。
EasyMock的模拟对象在代理中有一些计数器,用于记录所调用的内容。
Box.boxMethod()
只是一个静态方法调用。你不能嘲笑那个。 Or maybe you can.