P. ej. vamos a decir que tengo esta clase:¿Hay alguna forma de burlarse parcialmente de un objeto usando EasyMock?
public class Foo Implements Fooable {
public void a() {
// does some stuff
bar = b();
// moar coadz
}
public Bar b() {
// blah
}
// ...
}
y quiero probar Foo.a
. Quiero simular Foo.b
, porque estoy probando ese método por separado. Lo que estoy imaginando es algo como esto:
public class FooTest extends TestCase {
public void testA() {
Fooable foo = createPartialMock(
Fooable.class, // like with createMock
Foo // class where non-mocked method implementations live
);
// Foo's implementation of b is not used.
// Rather, it is replaced with a dummy implementation
// that records calls that are supposed to be made;
// and returns a hard coded value (i.e. new Bar()).
expect(foo.b()).andReturn(new Bar());
// The rest is the same as with createMock:
// 1. Stop recording expected calls.
// 2. Run code under test.
// 3. Verify that recorded calls were made.
replay(foo);
foo.a();
verify(foo);
}
}
sé que puedo escribir mi propio Foo
subclase de hacer este tipo de cosas para mí. Pero no quiero hacer eso si no es necesario, porque es tedioso, es decir, debería ser automático.
Gracias! Tristemente, parece que necesitas Junit 4 para usar classextensions :(: http://easymock.org/EasyMock2_2_ClassExtension_Documentation.html Supongo que esto significa que los usuarios de Junit 3 no tienen suerte. – allyourcode
Ohh ... esa es una buena información para yo también ... tengo un pensamiento sobre tu caso ... pero no está usando simulacro fácil en lugar de crear burlas por nosotros mismos anulando los métodos y devolviendo tu objeto 'Bar' simulado de la clase Mock extendida. – raddykrish
A partir de EasyMock 3.1 , la biblioteca ClassExtensions está en desuso y la burla parcial se ha trasladado a EasyMock. Esto dice que funciona con JUnit 3, por lo que puede estar de suerte: http://easymock.org/EasyMock3_1_Documentation.html – DoctorRuss