Probar integraciones HTTP sin depender de la disponibilidad real de terceros es clave para mantener ciclos de entrega rápidos y confiables. WireMock permite simular APIs externas con respuestas deterministas, errores controlados y latencias artificiales, logrando reproducibilidad y foco en el comportamiento de la aplicación. En entornos con Spring Boot, es sencillo levantar un servidor de WireMock durante los tests y redirigir allí el cliente HTTP (RestTemplate o WebClient) mediante propiedades, evitando dependencias frágiles en ambientes de prueba.
En escenarios prácticos, se puede activar WireMock con anotaciones de test (por ejemplo, @AutoConfigureWireMock con puerto aleatorio) o con la extensión de JUnit 5, e inyectar el endpoint simulado con DynamicPropertySource. Los stubs se definen por método y ruta, encabezados, query params y cuerpo, y devuelven respuestas con estado, payload JSON y headers. Además, es posible verificar interacciones (por ejemplo, cuántas veces se invocó un endpoint y con qué parámetros), organizar mapeos reutilizables en src/test/resources/mappings y __files, y hasta “grabar” llamadas reales vía proxy para generar fixtures iniciales. Más interesante aún: se pueden inyectar fallas (timeouts, resets de conexión, respuestas corruptas o demoras con fixed delays) para validar reintentos, timeouts, fallbacks y circuit breakers basados en Resilience4j.
Para ampliar la cobertura, Testcontainers complementa este enfoque ejecutando dependencias reales (PostgreSQL, Kafka, Redis, S3-compatible) en contenedores efímeros, mientras que WireMock mantiene bajo control las integraciones HTTP de terceros. Esta combinación aporta señal fuerte en pruebas de integración: infraestructura real donde aporta valor y stubs deterministas donde importa aislar escenarios y fallas. Buenas prácticas que marcan la diferencia: versionar los fixtures de respuestas, nombrar claramente los stubs por caso de negocio, parametrizar puertos para ejecución en paralelo en CI y medir tiempos de test para detectar latencias innecesarias. ¿Qué fallas de terceros te gustaría simular primero para elevar la resiliencia sin frenar la velocidad del equipo?
Fuente consultada: guía práctica sobre uso de WireMock con Spring Boot, con ejemplos de stubs, verificación de llamados y escenarios de error, y recomendaciones para combinarlo con Testcontainers para lograr pruebas más confiables.
Fuente: https://dzone.com/articles/testing-java-applications-wiremock-spring-boot

Comments are closed.