HOWTO · Java
Objetos simulados en Java
Los objetos simulados no son específicos solo de Java, pero es una técnica de prueba de unidad general en la que reemplazamos un bloque de código con una implementación ficticia solo para emular el código real. Es muy útil escribir pruebas unitarias dirigidas a la funcionalidad proporcionada por la clase bajo prueba.
Los objetos simulados ayudan a simular y verificar objetos reales sin ejecutar el código real en esos objetos. Puede configurar un simulacro para devolver resultados específicos en las llamadas al método y verificar fácilmente si se llamó al método o no.
Como se discutió anteriormente, los objetos simulados se utilizan para pruebas unitarias. Si tiene un objeto cuyos métodos desea probar y esos métodos dependen de otros objetos, entonces, en ese caso, puede crear una simulación de la dependencia en lugar de la instancia real de esa dependencia, y puede probar sus objetos en aislamiento.
Objetos simulados en Java
Los marcos comunes de Java para la creación de objetos simulados incluyen JMock y EasyMock. Estos dos marcos generalmente le permiten crear objetos simulados y puede definir su comportamiento en consecuencia para saber qué esperar exactamente de los valores devueltos y el efecto.
Por ejemplo, un caso de uso común podría ser en una aplicación Modelo-Vista-Controlador (MVC) donde tenemos una capa de Objetos de acceso a datos (DAO) y un controlador que realiza la lógica empresarial. Si desea probar el controlador y el controlador depende de un objeto de acceso a datos (DAO), puede crear un objeto simulado del DAO que devolverá objetos ficticios a su controlador.
Los objetos simulados ayudan a probar la funcionalidad de una aplicación que desea probar porque podemos lograr todas las dependencias burlándonos de esos objetos dependientes.
Y si pasan la prueba, es seguro que la unidad bajo esta prueba es correcta.
Una cosa importante a considerar es que los objetos simulados implementan la misma interfaz que los objetos reales de los que se burlan. Esto permite que su código los trate a través del tipo de interfaz como si fueran instancias reales.
Para usar objetos simulados, importe la biblioteca Mockito; importar org.mockito.Mockito.* estático; le permite usar el método mock(), que ayuda a crear instancias de objetos simulados.
El siguiente paso es la creación del simulacro y la sintaxis es List mockedList = mock(List.class);. Ahora, para agregar algunos valores, usamos el objeto definido de List de la siguiente manera, mockedList.add("Value one"), y lo verificamos usando el método verify() como sigue, verify(mockedList).add("one").
// Import Library
import static org.mockito.Mockito.*;
// Create Mock
List mockedList = mock(List.class);
// using mock object
mockedList.add("one");
mockedList.clear();
// Varifying
verify(mockedList).add("one");
verify(mockedList).clear();