La documentación EasyMock es bastante claro queEasyMock - cambiar el comportamiento de equals() y otros métodos de objetos,
El comportamiento de los tres métodos de objeto es igual a(), hashCode() y toString() no puede ser cambiado para Simulacros de objetos creados con EasyMock, incluso si son parte de la interfaz para la que se crea el objeto simulado.
El código que estoy tratando de probar utiliza equals() para comparar mi objeto de simulacro con otra cosa. Me gustaría hacer algo como
expect(mock.equals(obj)).andReturn(false);
Cuando hago eso, obtengo una IllegalStateException. No es de extrañar, dado lo que dice la documentación.
¿Alguien tiene alguna sugerencia para un enfoque alternativo? ¿Hay alguna otra forma de controlar qué devolverá el objeto simulado cuando se llame a igual() sobre él? Supongo que puedo crear una subclase que anula iguales()
class FooImplOverrideEquals extends FooImpl {
public boolean equals;
public boolean equals(Object obj) { return equals; }
}
FooImplOverrideEquals mock = createMock(FooImplOverrideEquals.class);
mock.equals = false; // instead of expect(mock.equals(obj)).andReturn(false);
pero esto parece poco elegante. Siento que me falta algo importante (como la razón por la cual EasyMock no te permite anular esos métodos de objetos). ¿Hay una mejor solución?
Si lo que desea es llamar m ock.equals (algo), ¿no puedes simplemente renombrar el método: mock.equalsalt (algo)? –
Sí, pero en el código que estoy probando quiero usar .equals() y no .equalsalt(). –
Creo que, en lugar de burlarse, necesitas usar stubs :) –