
Mientras que en la entrada anterior nos centrábamos en los parámetros de entrada y salida de una clase y lo que nos devolvía, en este tipo de pruebas lo que nos va a interesar es como se relacionan entre si las clases.
Las pruebas de caja blanca o caja transparente son más exigentes que las de caja negra, ya que se concentran en la forma en que el programa realiza su funcionalidad para lograr el resultado, y no en el resultado en sí.
Haremos uso de la librería Mockito
Mockito nos permite crear "objetos simulados", que interactuen con nuestro objeto, sin necesitar de implementarlos.
Se siguen los siguientes pasos:
1.Definir el objeto a probar.
2.Definir la relación entre el objeto simulado (mock) y nuestra clase.
3.Invocación
4.Comprobación de resultados y comportamientos
Siguiendo el ejemplo anterior de la venta de entradas, tenemos la clase Cine que debe comunicarse con el servicioAsignacionButaca,
la clase servicioAsignacionButaca carece de implementación, solo conocemos en cine los métodos de dicha clase que vamos a necesitar.
1.Definir el objeto a probar.
Cine cine=new Cine()
ServicioButaca servicioButacaMock=mock(ServicioButaca.class);
2.Relación entre objetos
cine.servicioButaca=servicioButacaMock
3.Invocación.
cine.reservaEntrada(Pelicula,Fecha)
//reservaEntrada(..) hace uso del metodo reservaButaca de la clase "mockeada";
4.Comprobación de resultados
verify(ServicioButacaMock).reservaButaca(pelicula,fecha)
El uso de mocks no sólo permite verificar la comunicación. Tenemos opciones adicionales para el control de excepciones o los valores de retorno de una función.
when(....).return(VALOR)
VERIFY(....).nombreMetodo
WHEN(...).thenThrow(EXCEPCION)
No hay comentarios:
Publicar un comentario