java unit-testing compiler-errors easymock

java - ¿Compilar el error al usar EasyMock.expect() en un ejemplo muy simple?



unit-testing compiler-errors (4)

Como el método send () devuelve vacío, simplemente llame al método simulado con los valores esperados y repita:

SomeInterface mock = EasyMock.createMock(SomeInterface.class); SomeBase expected = new DerivesFromSomeBase(); mock.send(expected); replay(mock);

Estoy intentando un ejemplo muy simple usando EasyMock , sin embargo, simplemente no puedo construirlo. Tengo el siguiente caso de prueba:

@Test public void testSomething() { SomeInterface mock = EasyMock.createMock(SomeInterface.class); SomeBase expected = new DerivesFromSomeBase(); EasyMock.expect(mock.send(expected)); }

Sin embargo, EasyMock.expect(... el siguiente error en EasyMock.expect(... línea:

The method expect(T) in the type EasyMock is not applicable for the arguments (void)

¿Puede alguien señalarme en la dirección correcta? Estoy completamente perdido.


Como se burla de una interfaz, el único propósito de burlarse de un método sería devolver un resultado de ese método. En este caso, parece que el tipo de devolución de su método ''enviar'' es nulo. El método ''EasyMock.expect'' es genérico y espera un tipo de devolución, lo que hace que el compilador le diga que no puede usar un método nulo porque no tiene un tipo de devolución.

Para obtener más información, consulte la documentación de la API de EasyMock en http://easymock.org/api/easymock/3.0/index.html .


Si desea probar métodos void , llame al método que desea probar en su simulacro. Luego llame al método expectLastCall() .

Aquí hay un ejemplo:

@Test public void testSomething() { SomeInterface mock = EasyMock.createMock(SomeInterface.class); SomeBase expected = new DerivesFromSomeBase(); mock.send(expected); EasyMock.expectLastCall().andAnswer(new IAnswer<Object>() { public Object answer() { // do additional assertions here SomeBase arg1 = (SomeBase) EasyMock.getCurrentArguments()[0]; // return null because of void return null; } }); }


No puede escribir métodos con un retorno nulo de esa manera; revise esta pregunta para obtener una buena respuesta sobre cómo puede simular el comportamiento de su método de send en su objeto expected .