2010-06-23 84 views
7

是否可以重新定义对同一个模拟对象实例的特定期望?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在重置呼叫后未定义,因此暂时不工作。

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

在此先感谢

+0

很好的问题......是不是有一种方法可以使用EasyMock API完成这项工作? – 2011-08-08 21:16:58

回答

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

Plus:return zeroth String,yes?