2010-06-23 20 views
7

¿Es posible volver a definir las expectativas específicas en la misma instancia de objeto simulado?EasyMock: cómo restablecer la simulación pero mantener las expectativas?

Decir que tengo esta prueba que verifica 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); 

Lo Después me gustaría hacer es restablecer la maqueta, manteniendo todas las expectativas definidas, pero el cambio de uno de ellos, dicen:

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

No funciona en el minuto ya que foo.size no está definido después de la llamada de reinicio.

¿Debe ser una buena manera de hacer esto en lugar de reconstruir las expectativas todo el tiempo?

Gracias de antemano

+0

Una buena pregunta ... ¿no hay una manera de hacer esto con la API de EasyMock? –

Respuesta

2

¿Podría escribir las expectativas como una función y pasar el argumento esperado como un argumento? Es lo que hice en ocasiones anteriores.

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, ¿sí?

Cuestiones relacionadas