WireMock como si fuera Mockito

En los tests con Mockito...

  • Falseamos todos los colaboradores del SUT
  • Le decimos a los colaboradores qué responder a cada llamada
  • Comprobamos la respuesta del SUT
  • Comprobamos que las llamadas a los colaboradores son EXACTAMENTE las que esperamos

 

Así controlamos toda la entrada y salida del SUT para comprobar que su comportamiento desde el exterior es el correcto.

El SUT es el Subject Under Test que viene a ser la clase/funcion/loquesea que estemos testeando, son unas siglas muy guays que la peña de QA usa porque son profesionales. Aritz guapo.

Ejemplo en Payments API

EnsureStripeCustomerTest.java:70

En los tests con WireMock, normalmente...

  • Falseamos los colaboradores del SUT
  • Le decimos a los colaboradores qué responder a cada llamada
  • Comprobamos la respuesta del SUT
  • ...
  • Y nos olvidamos de comprobar que las llamadas a los colaboradores han sido correctas

 

Pero podemos hacerlo y no es complicado aliñando un poco el cliente de WireMock en los tests.

Ejemplo en Payments API

PayPalTokenizationTest.java:142

No es todo color de rosas:

  • Hay que hacerse esas funciones extra que WireMock no incluye para asemejarlo en funcionalidad a Mockito
    • Que igual existen pero no pude encontrarlas porque el concepto "documentación" en el mundo Java es una puta broma de mal gusto :D
  • Es fácil mientras sepas exactamente cuando la operación que testeas ha finalizado.
    • Background jobs que se lanzan tras una petición HTTP? Mensajes a la Rabbit que se consumirán a saber cuando? Suerte :)

Pero creo que merece la pena :)

A pastar!

Made with Slides.com