Cómo mockear una dependencia entre microservicios en local
Tu micro llama a otro servicio que no quieres —o no puedes— levantar: está detrás de la VPN, tarda en arrancar, o simplemente no te interesa para lo que estás probando. Lo mockeas: algo responde por él con lo que tú definas.
La parte que suele doler no es fabricar la respuesta, sino conseguir que tu micro
llame al mock en vez de al servicio real sin tocar la configuración del repositorio.
En Aseptic eso es un conmutador: la dependencia se resuelve como mock y el motor
reescribe la URL al arrancar.
1. Resuelve la dependencia como «mock»
Sección titulada «1. Resuelve la dependencia como «mock»»En el panel de Dependencias del escenario, pon esa dependencia en mock. A partir de ahí, las llamadas de tu micro a ese core las atiende el servidor de mocks de Aseptic.
2. Define la respuesta
Sección titulada «2. Define la respuesta»Tienes dos caminos, según prefieras adelantarte o reaccionar:
Proactivo (desde OpenAPI). En la sección Mocks, crea un stub para ese servicio. Si declara OpenAPI, selecciona la operación y Aseptic genera una plantilla del cuerpo; si no, lo escribes a mano. Ver Sección Mocks.
Reactivo (desde una llamada real). Arranca el escenario y deja que tu micro llame. La petición aparece en el dock Llamadas mock; conviértela en stub con un clic y edítala. Ver Dock de Llamadas mock.
3. Ajusta variantes
Sección titulada «3. Ajusta variantes»Un endpoint puede tener varias variantes (una 200, una 500, con latencia…). La
que se sirve se marca con el conmutador. Los cambios se aplican con recarga en
caliente: no hace falta reiniciar nada.
Sin arrancar
Sección titulada «Sin arrancar»Puedes comprobar qué respondería un mock sin levantar el escenario: en el CLI,
aseptic mock probe <método> <ruta>.
¿Y WireMock, Pact o Testcontainers?
Sección titulada «¿Y WireMock, Pact o Testcontainers?»Resuelven problemas distintos y a menudo conviven con esto. La diferencia práctica es quién decide a dónde llama tu micro.
WireMock (o cualquier servidor de stubs) hace lo mismo que el servidor de mocks de Aseptic: atiende peticiones HTTP con respuestas que tú defines. Lo que no hace es apuntar tu servicio hacia él: sigues teniendo que cambiar la URL en la configuración del micro, para cada micro y cada vez que quieras volver al servicio real. Si ya tienes stubs de WireMock, no los tires: son la misma idea, y el trabajo que ahorra Aseptic es el del cableado.
Pact y el contract testing no son mocks de conveniencia: verifican que consumidor y proveedor siguen entendiéndose, y su sitio natural es la CI. Un mock local te deja seguir trabajando; un contrato te avisa de que el proveedor cambió. No se sustituyen.
Testcontainers levanta la dependencia de verdad en un contenedor, atada al ciclo
de vida del test: nace y muere con él. Es lo que quieres cuando lo que pruebas es la
integración real con esa pieza. No es lo que quieres cuando el servicio no cabe en un
contenedor, cuando depende de datos que no tienes, o cuando lo que necesitas es que
falle con un 500 a la tercera llamada.
En resumen: mock cuando la respuesta te da igual y lo que pruebas es tu camino; dependencia real cuando lo que pruebas es la integración; contrato para que no se te rompa por debajo. Aseptic deja elegir entre las tres por dependencia, sin editar el repositorio.