Maven Central · 1.0.0 Java 8+ Sin dependencias añadidas

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:

pom.xml (Maven)
<dependency>
  <groupId>com.mr-cisne.cispalmocks</groupId>
  <artifactId>cispalmocks-spring-boot-starter</artifactId>
  <version>1.0.0</version>
</dependency>
build.gradle (Gradle)
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:

Estructura en tu proyecto
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:

application.yml
cispalmocks:
  enabled: ${CISPALMOCKS_ENABLED:false}
  simulate: jsonplaceholder
ConfigMap o Entorno Dev
CISPALMOCKS_ENABLED=true
CISPALMOCKS_SIMULATE=jsonplaceholder
¿Otra URL en el entorno? Si allí la API vive en otra dirección, no vuelvas a exportar: CISPALMOCKS_API_JSONPLACEHOLDER_BASE_URLS=https://api.dev.tuempresa.com

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:

Salida de log al iniciar
╔════════════════════════════════════════════╗
║  CispalMocks: MODO MOCKS ACTIVADO          ║
║   jsonplaceholder  2 grabaciones           ║
╚════════════════════════════════════════════╝
Comportamiento con el modo mocks activado
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.