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:
 Codigos de promocion del cliente segun pais
 -tiene codigo de promocion
 -no tiene codigo de promocion
 -hay codigos de promocion diferentes
 
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
     
    private MarketingApi
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    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.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • 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.