TL;DR
Los servicios de simulación (mock) de SoapUI simulan puntos finales SOAP o REST localmente, pero requieren un proceso Java en ejecución, configuración manual de despacho y no pueden compartirse en un equipo sin una máquina compartida. Smart Mock de Apidog genera respuestas de simulación a partir de su esquema de API, se ejecuta en la nube y se comparte automáticamente con su equipo.
💡 Apidog es una plataforma de desarrollo de API gratuita y todo en uno con Smart Mock incorporado que crea puntos finales de simulación instantáneos a partir de sus definiciones de API sin necesidad de ejecutar un proceso Java local. Pruebe Apidog gratis, no se requiere tarjeta de crédito.
Introducción
Los servicios de simulación (mock) resuelven un problema común en el desarrollo de API: permiten probar cómo el código cliente maneja un servicio antes de que ese servicio esté listo, o permiten probar casos extremos (errores, respuestas lentas) sin afectar un sistema real.
SoapUI ha ofrecido servicios de simulación desde sus primeras versiones, ejecutando un servidor HTTP local que responde según reglas configuradas. Sin embargo, este enfoque requiere mantener el proceso abierto, no es fácilmente accesible para otros miembros del equipo y la configuración puede ser engorrosa.
Esta guía explica cómo operar los servicios de simulación de SoapUI, cómo configurarlos, los problemas técnicos frecuentes y cómo el enfoque de Apidog puede optimizar el proceso.
Cómo funcionan los servicios de simulación de SoapUI
SoapUI crea servicios de simulación a partir de interfaces SOAP o REST en tu proyecto. El flujo básico es:
- SoapUI escucha en un puerto local que tú defines (ejemplo:
http://localhost:8088/MockService). - Intercepta solicitudes entrantes.
- Usa la lógica de despacho para seleccionar una "respuesta de simulación".
- Devuelve la respuesta configurada.
Para SOAP, SoapUI puede generar automáticamente respuestas stub a partir del WSDL, útil para simular servicios aún no implementados o inaccesibles.
Configuración de un servicio de simulación de SoapUI (paso a paso)
Para una interfaz SOAP
- Haz clic derecho en una interfaz SOAP dentro del árbol del proyecto.
- Selecciona "Generar MockService".
- Configura en el diálogo:
- Nombre del servicio (ejemplo: "OrderService Mock").
- Puerto (por defecto 8088; cámbialo si está ocupado).
- Ruta (ejemplo:
/orders).
- Haz clic en Aceptar. Se crea el nodo MockService.
- Expande el nodo MockService. Verás una "MockOperation" por cada operación SOAP.
- Haz doble clic en una MockOperation para editar respuestas simuladas.
- Modifica el XML de respuesta según lo que necesites simular.
- Haz clic en el botón verde de reproducción para iniciar el servidor local.
Ahora tu simulación responde en http://localhost:8088/orders. Apunta tu cliente a esa URL.
Para una interfaz REST
- Haz clic derecho en la interfaz REST o recurso.
- Selecciona "Agregar a MockService" o "Generar MockService".
- Configura puerto y ruta como en SOAP.
- Para cada recurso/método, define el cuerpo de la respuesta simulada y código de estado.
- Inicia el servicio de simulación.
Configuración del despacho
Por defecto, SoapUI devuelve la primera respuesta simulada encontrada. Para respuestas diferentes según la solicitud, configura un "script de despacho" (Groovy) o usa el despacho "SEQUENCE".
- Despacho SEQUENCE: Devuelve respuestas en orden fijo en llamadas sucesivas.
- Despacho SCRIPT: Un script Groovy inspecciona la solicitud y retorna el nombre de la respuesta a usar.
Ejemplo de script de despacho:
def request = mockRequest.getRequestContent()
if (request.contains("orderId>12345")) {
return "OrderFoundResponse"
} else {
return "OrderNotFoundResponse"
}
Crea múltiples respuestas simuladas (ej: "OrderFoundResponse", "OrderNotFoundResponse"). El script selecciona cuál devolver según el contenido de la solicitud.
Problemas comunes del servicio de simulación de SoapUI
Problema 1: La simulación se detiene al cerrar SoapUI
La simulación corre en el proceso JVM de SoapUI. Al cerrar SoapUI, la simulación termina. Tus compañeros pierden acceso.
Soluciones comunes:
- Dejar SoapUI abierto en una máquina/VM dedicada.
- Usar la línea de comandos:
mockservicerunner.sh -p 8088 -s "OrderService Mock" project.xml - Mantener una máquina persistente corriendo SoapUI.
Aun así, siempre necesitas una máquina con Java y SoapUI instalados.
Problema 2: Compartir la simulación con el equipo
Una simulación en localhost:8088 solo es accesible localmente. Para compartir, debes:
- Configurar reglas de firewall/red.
- Usar una máquina compartida.
- Configurar VPN si es necesario.
Problema 3: Scripts de despacho y XML complejo
Los scripts de SoapUI suelen hacer coincidencia de cadenas sobre el XML. Los espacios de nombres pueden variar y romper scripts que esperan cadenas exactas como <orderId>12345</orderId>.
La solución implica parsear XML con la clase GroovyUtils, aumentando la complejidad.
Problema 4: Estado entre llamadas
Por defecto, los mocks de SoapUI son stateless. Para simular flujos (crear y luego leer), debes guardar estado en variables Groovy compartidas, lo cual es frágil.
Problema 5: SSL para servicios de simulación
Configurar HTTPS implica crear un keystore, configurar SSL en SoapUI y gestionar certificados para los clientes. Es mucho más complejo que HTTP simple.
Apidog Smart Mock: cómo se compara
El enfoque de Apidog se basa en el diseño de la API y no en procesos locales.
Cuando defines un endpoint en Apidog (método, ruta, esquemas), Apidog genera automáticamente un endpoint de simulación en la nube, sin instalación ni configuración.
La URL de simulación típica es:
https://{tu-proyecto}.mock.apidog.io/orders/{id}
Ventajas:
- Siempre activo, sin procesos que arrancar o detener manualmente.
- Accesible para todo el equipo mediante URL.
- Respuestas generadas a partir de tus esquemas.
Cómo Apidog genera respuestas simuladas
Apidog lee tu esquema de respuesta (JSON Schema/OpenAPI) y genera datos de prueba realistas.
Ejemplo: Si orderId es un string UUID, retorna un UUID aleatorio. Si amount es un number entre 0 y 10000, retorna un valor en ese rango.
Puedes definir reglas fijas, por ejemplo, que orderId devuelva "test-123" para pruebas predecibles.
Puntos finales SOAP en Apidog Mock
Smart Mock de Apidog está optimizado para REST y JSON. Para SOAP, debes crear manualmente la solicitud y configurar la respuesta XML del sobre SOAP en el servidor de simulación.
No hay generación automática basada en WSDL, pero es útil para equipos que solo requieren simulación SOAP básica sin procesos Java.
Simulación con estado
Apidog soporta scripts personalizados en JavaScript para simular comportamiento con estado. Puedes inspeccionar la solicitud y devolver diferentes respuestas según la lógica, similar a los scripts de despacho en SoapUI pero usando JavaScript.
Comparación lado a lado
| Característica | Simulación de SoapUI | Apidog Smart Mock |
|---|---|---|
| Requiere Java | Sí | No |
| Siempre activo | Solo con ejecutor de línea de comandos | Sí (nube) |
| Accesible para el equipo | Red manual | Sí, a través de URL compartida |
| Generación automática de WSDL | Sí | No |
| Basado en esquema REST | No | Sí |
| Respuestas dinámicas | Despacho Groovy | Scripts de simulación JavaScript |
| Soporte HTTPS | Configuración manual de almacén de claves | Incorporado |
| Simulación con estado | A través de variables Groovy | A través de scripts JavaScript |
| Gratuito | Sí | Sí |
Cuándo usar cada uno
Usa SoapUI Mock Services si:
- Necesitas simular servicios SOAP y generar stubs desde WSDL.
- Trabajas offline o bajo restricciones de red.
- Ya usas el ecosistema SoapUI y no quieres migrar.
Usa Apidog Smart Mock si:
- Simulas endpoints REST y necesitas acceso compartido sin configurar red.
- Quieres mocks que siempre estén activos sin intervención manual.
- Estás comenzando un nuevo proyecto y defines contratos de API antes de implementar.
- Prefieres evitar instalaciones Java para servicios de simulación.
Preguntas frecuentes
¿Puedo ejecutar servicios de simulación de SoapUI sin interfaz gráfica (headlessly)?
Sí. Usa mockservicerunner.sh (Linux/macOS) o mockservicerunner.bat (Windows) con la ruta del proyecto y el nombre del servicio. Necesitas Java instalado.
¿Apidog es compatible con los servicios de simulación SOAP?
Parcialmente. Puedes configurar respuestas personalizadas XML SOAP. No hay generación automática desde WSDL, pero para equipos que ya conocen la interfaz SOAP, la configuración manual es suficiente.
¿SoapUI puede simular respuestas lentas?
Sí. Configura el parámetro "Retraso" en la respuesta simulada. Apidog también permite simular retrasos de red.
¿Cuántas solicitudes simuladas puede manejar Apidog?
El servicio cloud de Apidog soporta cargas de desarrollo y pruebas típicas. Para pruebas de alto volumen, considera una solución dedicada.
¿Y si dos miembros del equipo necesitan diferentes respuestas simuladas para el mismo endpoint?
En SoapUI, cada persona corre su propio mock local. En Apidog, puedes crear múltiples entornos o usar parámetros de consulta para seleccionar escenarios. La función "Mock expects" permite emparejar condiciones de solicitud con respuestas específicas.
¿La simulación de Apidog requiere tener la API completamente definida?
Tener un esquema de respuesta ayuda a generar datos realistas, pero puedes crear respuestas manuales sin un esquema completo. Define el endpoint, configura un body de respuesta personalizado y ya tienes simulación.
En resumen: SoapUI Mock Service es funcional pero depende de procesos Java locales. Para equipos que buscan simulaciones persistentes y compartidas, la nube de Apidog elimina la necesidad de coordinación y configuración manual.
Top comments (0)