WireMock simula una API HTTP al comparar cada petición con reglas configuradas y devolver la respuesta definida para las que coinciden. Puedes crear stubs en código, en archivos JSON o mediante su API de administración; ejecutarlo dentro de pruebas Java, como un JAR independiente o en Docker; y grabar tráfico encaminado a una API real para reproducirlo después.
Qué hace WireMock y qué es un stub
Un stub es una regla que relaciona una petición con una respuesta predefinida. El cliente de tu aplicación envía una solicitud a WireMock; WireMock compara el método, la URL y, según la regla, las cabeceras o el contenido del cuerpo. Si hay coincidencia, responde con el estado HTTP, las cabeceras y el cuerpo que configuraste. También permite verificar solicitudes recibidas y simular demoras, fallos, comportamiento con estado y WebSockets. Consulta la descripción general de WireMock.
Por ejemplo, puedes definir que GET /users/42 devuelva 200 con un JSON estable. Configuras el cliente bajo prueba para llamar a la dirección local de WireMock y, además de comprobar qué resultado obtiene el cliente, verificas que haya enviado la petición esperada. Así la prueba no depende de que la API externa esté disponible ni de que sus datos cambien.
Cómo crear stubs para probar una API
WireMock ofrece tres vías para gestionar stubs: código o DSL, archivos JSON en el directorio mappings y peticiones a la API REST de administración. En modo independiente, los cuerpos de respuesta pueden guardarse como archivos en __files. Elige una vía según dónde quieras mantener las reglas y quién deba administrarlas; los archivos JSON, por ejemplo, pueden versionarse junto con el proyecto.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Ejemplo en Java con JUnit
La guía oficial de inicio rápido usa Java 11 o 17 y Maven o Gradle, junto con JUnit 4. Si tu proyecto utiliza otra versión de Java o un marco de pruebas distinto, comprueba la compatibilidad antes de copiar el ejemplo. La dependencia Java documentada es org.wiremock:wiremock; la guía de inicio rápido de Java y JUnit 4 muestra cómo iniciar WireMock desde la prueba, registrar una regla y hacer que el cliente apunte al servidor simulado.
Para pruebas concurrentes, un puerto dinámico evita que varias instancias intenten ocupar el mismo puerto fijo. Asegúrate de que la URL base del cliente bajo prueba use el puerto que recibió la instancia activa de WireMock. Al terminar, comprueba tanto el resultado funcional como la solicitud recibida; una respuesta correcta por sí sola no demuestra que el cliente haya enviado el método, la ruta o las cabeceras esperadas.
Ejemplo con archivos JSON
En un servidor independiente, guarda los mappings como JSON en mappings y los cuerpos reutilizables en __files. Esto separa los datos de respuesta de las reglas y facilita revisar o compartir stubs sin incluirlos en código de prueba. También puedes crear, consultar o eliminar mappings a través de la API de administración, que expone operaciones REST.
Rank #2
Elegir cómo ejecutar WireMock
La decisión principal es si WireMock debe compartir el ciclo de vida de una prueba Java o funcionar como servicio aparte. Para una sola suite JVM, la dependencia integrada suele ser directa; para clientes de distintos lenguajes o un mock compartido, un servidor independiente puede encajar mejor.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
| Enfoque | Cuándo conviene | Qué tener en cuenta |
|---|---|---|
| Dependencia Java | Pruebas dentro de un proyecto JVM, con control del servidor desde el código de prueba. | El quick start oficial consultado cubre Java 11 o 17 con Maven o Gradle y JUnit 4. La dependencia indicada es org.wiremock:wiremock. |
| JAR independiente | Un servidor separado al que se conectan uno o más clientes. | La documentación distingue el JAR estándar del uber-JAR independiente con dependencias integradas. Para el servicio autónomo muestra org.wiremock:wiremock-standalone y ejecución con java -jar. |
| Docker | Un servidor aislado cuya configuración y datos quieres suministrar desde el entorno del contenedor. | Al montar un directorio en /home/wiremock, Docker puede cargar de allí mappings y archivos de respuesta. |
| WireMock Cloud | Mocks alojados o colaboración centralizada, en lugar de administrar un servidor local. | La documentación lo describe como un servicio comercial alojado; sus precios y condiciones no se detallan aquí. |
La documentación consultada mostraba WireMock 3.13.2 como ejemplo de versión estable y la misma etiqueta para Docker; son valores publicados en esas páginas al consultarlas, no una garantía de que sean las versiones más recientes cuando leas esto. También señalaba WireMock 4.x como beta. Antes de configurar un proyecto, revisa la página oficial de instalación para confirmar la versión estable, las coordenadas y la etiqueta adecuadas.
Ejecutar como JAR
El JAR independiente resulta práctico cuando quieres arrancar el mock fuera del proceso de pruebas. La documentación oficial explica tanto la descarga directa como la ejecución con java -jar, y el uso del artefacto org.wiremock:wiremock-standalone en proyectos que necesiten ese paquete autónomo. Para opciones de inicio y administración, consulta ejecución como proceso independiente.
Rank #3
Ejecutar en Docker
La imagen oficial permite iniciar WireMock como contenedor. Monta una carpeta local en /home/wiremock para que el servidor cargue los mappings y archivos de respuesta de esa ubicación; así puedes mantenerlos fuera de la imagen. La guía de WireMock en Docker documenta el montaje y la ejecución. Usa una etiqueta de imagen explícita que corresponda a la versión elegida en vez de asumir que una etiqueta concreta seguirá siendo la más actual.
Cómo grabar y reproducir respuestas de una API
WireMock puede actuar como proxy hacia una API existente y transformar las interacciones en mappings. El flujo consiste en configurar la ruta hacia el servicio real, enviar tráfico a través de WireMock, detener la grabación y usar los mappings generados para responder a solicitudes posteriores sin llamar al servicio original.
- Configura el proxy primero. Indica a WireMock qué API debe reenviar las solicitudes. Si quieres capturar llamadas externas, el proxy debe estar configurado antes de generar ese tráfico.
- Inicia la grabación. Puedes hacerlo mediante la API JSON de administración o el DSL de Java.
- Envía las solicitudes que quieres capturar. Las interacciones que pasen por WireMock pueden convertirse en mappings.
- Detén la grabación. WireMock genera mappings a partir de las solicitudes recibidas para reproducir las respuestas.
- Revisa las capturas y reproduce. Comprueba que los cuerpos, cabeceras y datos capturados sean apropiados para pruebas repetibles; después dirige el cliente a WireMock en lugar de la API real.
La grabación acelera la creación de ejemplos basados en tráfico real, pero no sustituye la revisión de los datos. Una respuesta capturada puede incluir valores volátiles o información que no conviene conservar en pruebas. La documentación de grabación y reproducción explica el flujo de proxy, inicio y detención.
Rank #4
Proteger la API de administración
La API de administración puede cambiar mappings y registrar solicitudes; no la expongas sin controles en una red que no sea de confianza. Para el JAR independiente, WireMock documenta --admin-api-basic-auth para exigir autenticación Basic y --admin-api-require-https para exigir HTTPS en las llamadas administrativas. Configura estos controles de acuerdo con el modo de despliegue y limita quién puede alcanzar la interfaz administrativa. Los detalles están en la guía de ejecución independiente.
Cuándo elegir cada forma de crear y mantener stubs
- Código o DSL: útil cuando las reglas están ligadas a una prueba y deben vivir junto al código que las verifica.
- JSON: útil para mappings legibles y versionables, o para cargar la misma configuración en una ejecución independiente.
- API de administración: útil cuando el servidor ya está en marcha y necesitas gestionar mappings mediante REST.
- Grabación: útil para partir de interacciones con una API real; inspecciona los resultados para que las pruebas sigan siendo estables.
El artículo oficial sobre stubbing resume la idea central: “A core feature of WireMock API mocking is the ability to return canned HTTP responses for requests matching criteria.”
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.
Recommended Free Tools




