EasyMock“预期”调用的数量大于“times”方法中设置的值

时间:2013-10-03 20:27:44

标签: java mocking easymock

在重构一些旧的单元测试时,我添加了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

1 个答案:

答案 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.