EasyMock - 如何重置模拟但保持期望?

时间:2010-06-23 10:36:46

标签: testing mocking easymock

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

说我有这个验证确定的测试:

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,因此不能在分钟工作。

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

提前致谢

1 个答案:

答案 0 :(得分:2)

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

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;
}

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