Package giis.demo.descuento.ut
Class TestPromocionMock
java.lang.Object
giis.demo.descuento.ut.TestPromocionMock
@SpringBootTest(classes=DescuentoApplication.class)
@TestPropertySource(locations="classpath:application-test.properties")
public class TestPromocionMock
extends Object
Prueba de un servicio con una implementacion incompleta: Ilustra el uso de Mocks y la carga
datos de prueba mediante ficheros externos.
El servicio bajo prueba utiliza un api para acceder al servicio de marketing, que esta desplegado como un microservicio independiente (no comparte base de datos), pero cuya implementacion todavia no esta disponible (solo el interfaz).
Se anyade la anotacion SpringBootTest: Como Spring Boot realiza automaticamente la mayor parte de las configuraciones, y el resto se especifican en la clase que arranca la aplicacion, indica que se reutilizara esta clase para la configuracion.
Este test define un mock para el api utilizando Mockito. Las situaciones a cubrir son:
El servicio bajo prueba utiliza un api para acceder al servicio de marketing, que esta desplegado como un microservicio independiente (no comparte base de datos), pero cuya implementacion todavia no esta disponible (solo el interfaz).
Se anyade la anotacion SpringBootTest: Como Spring Boot realiza automaticamente la mayor parte de las configuraciones, y el resto se especifican en la clase que arranca la aplicacion, indica que se reutilizara esta clase para la configuracion.
Este test define un mock para el api utilizando Mockito. Las situaciones a cubrir son:
Codigos de promocion del cliente segun pais -tiene codigo de promocion -no tiene codigo de promocion -hay codigos de promocion diferentes
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
setUp()
Define el mock que devuelve una lista de pares clave-valor de la forma codigo de pais-codigo de promocion tal como los devolveria la invocacion al microservicio de marketing,void
El caso de prueba utiliza el servicio del cliente como si toda la implementacion de la api estuviera disponible, pero en este caso es simplemente un mock.
-
Field Details
-
cliente
-
marketing
-
-
Constructor Details
-
TestPromocionMock
public TestPromocionMock()
-
-
Method Details
-
setUp
public void setUp()Define el mock que devuelve una lista de pares clave-valor de la forma codigo de pais-codigo de promocion tal como los devolveria la invocacion al microservicio de marketing, -
testPromocionMock
@Sql(scripts="classpath:/sql-test-mock.sql", config=@SqlConfig(commentPrefix="--",separator=";")) public void testPromocionMock()El caso de prueba utiliza el servicio del cliente como si toda la implementacion de la api estuviera disponible, pero en este caso es simplemente un mock. Para cubrir las tres situaciones disenyadas se tienen tres clientes, en dos de ellos el codigo de pais se corresponde con un codigo de promocion existetne (codigos diferentes), en el otro no. Ilustra tambien como se puede inicializar la base de datos mediante sql en un archivo externo: https://docs.spring.io/spring/docs/current/spring-framework-reference/testing.html#testcontext-executing-sql.
-