CispalMocks Embebido
Las grabaciones del escritorio, dentro de tu aplicación Spring Boot o Quarkus. Para entornos de desarrollo o integración continua donde no se puede levantar un mock aparte: se activa por configuración, sin cambiar código, y solo simula las APIs que elijas mientras el resto va a sus servicios reales.
1 · Agrega la dependencia
Compatible con Spring Boot 2.6+, 3.x y 4.x (Java 8+). Disponible en Maven Central o desde el Artifactory/Nexus de tu empresa:
<dependency>
<groupId>com.mr-cisne.cispalmocks</groupId>
<artifactId>cispalmocks-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
implementation 'com.mr-cisne.cispalmocks:cispalmocks-spring-boot-starter:1.0.0'
2 · Exporta las grabaciones desde el escritorio
En CispalMocks, ve a la versión de tu API: Integración con Spring Boot / Quarkus… › Exportar… y selecciona la raíz de tu proyecto. Los archivos se copian en resources listos para empaquetar:
src/main/resources/cispalmocks/jsonplaceholder/
├── api.json
└── recordings/
├── get-users-1.json
└── post-posts.json
3 · Actívalo por configuración
Por defecto la librería permanece apagada. En el entorno de desarrollo se activa mediante variables de entorno o ConfigMap, sin tocar una sola línea de código:
cispalmocks:
enabled: ${CISPALMOCKS_ENABLED:false}
simulate: jsonplaceholder
CISPALMOCKS_ENABLED=true
CISPALMOCKS_SIMULATE=jsonplaceholder
CISPALMOCKS_API_JSONPLACEHOLDER_BASE_URLS=https://api.dev.tuempresa.com
1 · Dependencia para Quarkus 3
Para aplicaciones Quarkus 3.x con Java 17 o 21 (Jakarta EE):
<dependency>
<groupId>com.mr-cisne.cispalmocks</groupId>
<artifactId>cispalmocks-quarkus</artifactId>
<version>1.0.0</version>
</dependency>
Intercepta automáticamente tanto el REST Client clásico de Quarkus como el nuevo REST Client Reactivo.
2 · Configuración en application.properties
cispalmocks.enabled=${CISPALMOCKS_ENABLED:false}
cispalmocks.simulate=jsonplaceholder
1 · Dependencia para Quarkus 2 (javax)
Para aplicaciones basadas en Quarkus 2.16+ con JDK 11 o superior y paquete javax.*:
<dependency>
<groupId>com.mr-cisne.cispalmocks</groupId>
<artifactId>cispalmocks-quarkus2</artifactId>
<version>1.0.0</version>
</dependency>
4 · Comprueba que está activo
Al arrancar tu servicio, el log muestra de forma destacada el banner de activación, y cada respuesta simulada incluye la cabecera identificativa X-CispalMocks: simulado:
╔════════════════════════════════════════════╗
║ CispalMocks: MODO MOCKS ACTIVADO ║
║ jsonplaceholder 2 grabaciones ║
╚════════════════════════════════════════════╝
| Llamada de tu aplicación | Respuesta obtenida |
|---|---|
GET jsonplaceholder…/users/1 |
La grabada, con X-CispalMocks: simulado, sin salir a internet. |
GET jsonplaceholder…/users/99 |
404 con la grabación más cercana y en qué difiere (evita fallos silenciosos). |
GET pokeapi.co/api/v2/pokemon/pikachu |
La real de PokeAPI: no está en simulate, viaja al servicio real. |
Preguntas frecuentes
¿Puede activarse en producción por error?
No. CispalMocks detecta automáticamente los perfiles de producción estándar (prod, production) y se desactiva preventivamente por seguridad. Si intentas forzar su activación en producción, lanzará una excepción al arrancar salvo que configures explícitamente cispalmocks.allow-production=true.
¿Qué clientes HTTP intercepta?
Intercepta automáticamente RestTemplate, RestClient, WebClient, OpenFeign (con o sin balanceo Spring Cloud LoadBalancer) y los clientes REST de Quarkus (clásico y reactivo) mediante interceptores estándar.
¿Puedo cambiar las grabaciones sin recompilar?
Sí. Puedes montar un ConfigMap o volumen externo con cispalmocks.location=file:/ruta/a/grabaciones/. Las modificaciones en disco se recargan en caliente sin necesidad de reiniciar el pod o proceso.
¿Cómo simulo latencia para pruebas de rendimiento?
Puedes configurar un retraso fijo o un rango con cispalmocks.api.jsonplaceholder.latency=200ms-500ms. En clientes reactivos como WebClient, la latencia se simula de manera no bloqueante.