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

标签 testing mocking easymock

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

假设我有这个验证 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 在重置调用后未定义。

一定是一个很好的方法来做到这一点,而不是每次都重建期望?

提前致谢

最佳答案

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

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

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

关于testing - EasyMock - 如何重置模拟但保持预期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3100859/

相关文章:

java - Mockito spy 如何知道它何时进行 spy Activity ?

java - 重构以编写 "pretty"JUnit 测试

c# - 关于使用 Setup() 设置最小起订量行为的问题

c++ - 如何访问谷歌测试 fixture 静态变量

unit-testing - 在哪里测试私有(private)方法返回的对象?

java - GWT 和 EasyMock - 无法调用 createStrictMock()

java - 使用 EasyMock 模拟接受参数的接口(interface)

java - Spring EasyMock 调用模拟方法时获取 null

java - 在 jUnit 中测试有序的 CRUD

c# - 在单元测试中检查控制台输出