【问题标题】:EasyMock - how to reset mock but maintain expectations?EasyMock - 如何重置模拟但保持期望?
【发布时间】:2010-06-23 10:36:46
【问题描述】:

是否可以在同一模拟对象实例上重新定义特定期望?

假设我有这个验证 OK 的测试:

List<String> foo = createMock(List.class);
expect(foo.get(1)).andReturn("Wibble").once();
expect(foo.size()).andReturn(1).once();
replay(foo);
System.out.println(foo.get(1));
System.out.println(foo.size());
verify(foo);

然后我想做的是重置模拟,保持所有定义的期望,但改变其中一个,比如:

reset(foo);
// Redefine just one of the two expectations
expect(foo.get(1)).andReturn("Wobble").once();                
System.out.println(foo.get(1));
System.out.println(foo.size());
verify(foo);

因为 foo.size 在 reset 调用之后没有定义,所以现在不起作用。

必须是一种很好的方式来做到这一点,而不是每次都重新建立期望?

提前致谢

【问题讨论】:

  • 好问题...难道没有办法使用 EasyMock API 完成这项工作吗?

标签: testing mocking easymock


【解决方案1】:

你能把期望写成一个函数并将期望的参数作为参数传递吗?这是我以前做过的事情。

private List<String> setExpectations(String expectedString) {
  List<String> foo = createMock(List.class);
  expect(foo.get(0)).andReturn(expectedString).once();
  expect(foo.size()).andReturn(1).once();
  replay(foo);
  return foo;
}

加:返回第零个字符串,是吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多