Pact es una herramienta de referencia para pruebas de contrato impulsadas por el consumidor. Los consumidores escriben pruebas unitarias que generan un contrato; los proveedores lo verifican contra su código real; Pact Broker almacena los resultados; y can-i-deploy indica al pipeline si una versión puede implementarse. El ciclo detecta rupturas de integración que las pruebas unitarias aisladas no cubren. El coste es operativo: DSLs por lenguaje, estados de proveedor, un broker que mantener y verificaciones difíciles de reproducir localmente.
Apidog es una alternativa a Pact cuando el problema principal es la desviación entre el esquema del productor y el consumidor. En lugar de generar archivos pact, usa una especificación OpenAPI como fuente de verdad, valida las respuestas contra el esquema, genera mocks desde la especificación y ejecuta escenarios en CI con la CLI de Apidog.
No replica el flujo de Pact Broker: no hay archivos pact, matriz de compatibilidad ni can-i-deploy. Si necesitas esa coordinación entre muchos equipos que despliegan de forma independiente, Pact sigue siendo una opción adecuada.
Lo que Pact hace bien
Pact es una herramienta code-first para probar integraciones HTTP y de mensajería. El modelo está impulsado por el consumidor:
- El consumidor escribe una prueba contra un mock de Pact.
- La prueba registra pares concretos de solicitud y respuesta en un archivo pact.
- El proveedor reproduce esas interacciones contra su implementación real.
- Los estados del proveedor preparan los datos necesarios para cada interacción.
Pact registra solo los campos utilizados por el consumidor. Esto permite que el proveedor modifique campos no consumidos sin romper contratos existentes.
El Pact Broker convierte estos artefactos en una puerta de despliegue. Cada combinación verificada de consumidor y proveedor se registra en una matriz. Después, can-i-deploy comprueba si una versión puede desplegarse en un entorno concreto:
can-i-deploy \
--pacticipant orders-api \
--version "$GIT_SHA" \
--to-environment production
- Código de salida
0: se puede desplegar. - Código de salida
1: no se debe desplegar.
Pact tiene implementaciones oficiales en más de 10 lenguajes, incluidos JVM, JavaScript, Go, .NET, Python, Ruby, Rust, PHP y Swift. Para evitar operar un broker propio, SmartBear ofrece PactFlow, un broker administrado con nivel Starter gratuito para 2 integraciones, Team por $127 al mes para 50 integraciones y Enterprise con precios personalizados.
Dónde se acumula la complejidad
El problema no suele ser Pact en sí, sino el coste de operar su ciclo completo.
Cada consumidor escribe código DSL
Los contratos se generan desde pruebas, por lo que cada equipo debe aprender y mantener el DSL de Pact de su lenguaje. En una organización políglota, esto implica varios DSLs, configuraciones de mock y reglas de coincidencia que deben revisarse y refactorizarse.
Los estados del proveedor se convierten en una suite oculta
Una interacción puede requerir un estado como:
El usuario 42 existe y tiene una factura impaga.
El proveedor debe implementar un controlador que prepare ese estado. Con varios consumidores, el proveedor termina manteniendo muchos manejadores de estado para necesidades que no controla directamente.
El broker es infraestructura
Un broker autoalojado requiere:
- Base de datos.
- Actualizaciones.
- Autenticación.
- Webhooks para CI.
- Convenciones de ramas y entornos.
- Gestión de pacts pendientes.
Con PactFlow se reduce la operación, pero se incorpora otro proveedor a la plataforma.
Las verificaciones del proveedor pueden ser difíciles de depurar
La verificación reproduce solicitudes de consumidores contra una instancia activa del proveedor. Esto arrastra dependencias de ejecución:
- Seeds de base de datos.
- Stubs de autenticación.
- Procesos en segundo plano.
- Configuración del entorno.
Cuando falla una verificación, la prueba puede haber sido escrita por otro equipo y bloquear un despliegue mediante can-i-deploy.
PactFlow reconoce parte de este coste con sus pruebas de contrato bidireccionales. En ese enfoque, el proveedor publica una especificación OpenAPI, los consumidores publican contratos derivados de mocks y PactFlow compara ambos artefactos estáticamente. Para muchas integraciones, la comparación de esquemas es suficiente.
Este mismo enfoque se explica en pruebas de contrato bidireccional.
La alternativa: Apidog
Apidog es una plataforma de desarrollo de API utilizada por más de 500.000 desarrolladores. Sitúa OpenAPI en el centro y genera documentación, mocks, validaciones y pruebas desde la misma especificación.
La idea es simple: trata la especificación como el contrato y aplícala automáticamente en cada entorno. Este enfoque se desarrolla en pruebas de contrato de API.
1. Un contrato y cero DSLs
El contrato es una especificación OpenAPI. Los equipos trabajan sobre un único documento que define:
- Endpoints.
- Parámetros.
- Tipos.
- Campos requeridos.
- Enumeraciones.
- Respuestas de error.
No es necesario generar contratos desde pruebas en varios lenguajes.
2. Validación de esquema en cada ejecución
Cada solicitud y escenario de prueba puede validar la respuesta contra la especificación. Si el proveedor:
- Renombra un campo.
- Cambia un tipo.
- Elimina una propiedad requerida.
- Devuelve una respuesta incompatible.
la ejecución falla sin necesidad de añadir una aserción manual para cada campo.
3. Mocks disponibles desde el primer día
El mock inteligente de Apidog sirve respuestas derivadas del esquema en cuanto se define un endpoint. Los consumidores pueden desarrollar antes de que exista la implementación del proveedor.
En lugar de crear estados de proveedor, el equipo define ejemplos o expectativas personalizadas cuando necesita datos concretos.
4. Aplicación en CI sin broker
Puedes ejecutar escenarios desde el pipeline con:
apidog run --access-token "$APIDOG_ACCESS_TOKEN" --project-id "$PROJECT_ID"
El objetivo es que una implementación que viola la especificación falle en su propio CI antes de desplegarse.
Cambio de enfoque, pieza por pieza
El contrato
En Pact, el contrato es un archivo JSON generado desde interacciones observadas por un consumidor.
En Apidog, el contrato es una especificación OpenAPI compartida. Define tipos, campos, errores y endpoints en un solo lugar, con control de cambios basado en ramas.
La diferencia importante es esta:
- Pact indica qué campos usa cada consumidor.
- OpenAPI compartido define el acuerdo común, pero no incluye por sí mismo la señal de uso por consumidor.
A cambio, documentación, mocks, pruebas y clientes trabajan sobre el mismo artefacto. Consulta qué es un contrato de API para profundizar en este modelo.
Verificación del proveedor
Pact reproduce interacciones del consumidor contra el proveedor en ejecución.
Con Apidog, puedes crear escenarios de prueba que llamen a la implementación real y validar cada respuesta frente a OpenAPI.
Ejemplo de escenario para un endpoint:
GET /users/42
Validaciones esperadas:
{
"status": 200,
"body": {
"id": 42,
"email": "user@example.com"
}
}
Además de las aserciones funcionales, la respuesta debe respetar el esquema definido.
Desarrollo del consumidor
Pact proporciona un mock dentro de las pruebas del consumidor.
Apidog proporciona una URL de mock derivada de la especificación y compartible entre equipos. Los equipos de frontend o servicios downstream pueden apuntar a ese mock mientras el proveedor sigue en desarrollo.
Consulta pruebas de contrato y servidores mock para comparar mocks basados en especificaciones con mocks construidos manualmente.
Control de despliegue
Esta es la principal ventaja de Pact y Apidog no intenta replicarla.
Apidog no ofrece:
- Una matriz entre servicios.
- Verificaciones cruzadas por versión.
- Un equivalente a
can-i-deploy.
En su lugar, aplica una puerta basada en el contrato:
- Un cambio de proveedor que viola OpenAPI falla en su CI.
- Un cambio de especificación se revisa como un cambio explícito.
- Los mocks y la documentación se actualizan desde la misma especificación.
Para equipos con unos pocos pipelines coordinados, esta puerta a nivel de contrato suele ser suficiente. Para decenas de equipos que despliegan de forma independiente, la matriz de Pact sigue aportando valor.
Pact y PactFlow vs. Apidog
| Pact + PactFlow | Apidog | |
|---|---|---|
| Artefacto de contrato | Archivos pact generados por consumidor | Una especificación OpenAPI |
| Quién escribe el código del contrato | Cada equipo consumidor, con DSL por lenguaje | Nadie; la especificación se edita visualmente o como código |
| Verificación del proveedor | Reproducción de interacciones y estados del proveedor | Escenarios de prueba y validación automática de esquema |
| Mocks de consumidor | Proveedor mock dentro de las pruebas | Mock inteligente alojado desde la especificación |
| Detección de desviación | Durante las verificaciones | En cada solicitud y ejecución de CI |
| Control de despliegue | Matriz del broker y can-i-deploy
|
CI con control de contrato por servicio |
| Infraestructura | Broker autoalojado o PactFlow SaaS | Sin broker adicional; espacio de trabajo en la nube incluido |
| Documentación y diseño | Fuera de alcance | Documentación interactiva y editor visual |
| Coste | OSS gratuito; PactFlow gratis para 2 integraciones; Team $127/mes | Gratis hasta 4 usuarios; planes desde $9 por usuario/mes |
Coste y adecuación técnica
Las bibliotecas de Pact son gratuitas y de código abierto. El coste real está en la coordinación:
- Alojamiento u operación del broker.
- Pruebas DSL.
- Estados del proveedor.
- Depuración entre equipos.
- Convenciones de versionado y despliegue.
Ese coste aumenta con el número de integraciones.
El plan gratuito de Apidog cubre 4 usuarios e incluye editor de especificaciones, uso ilimitado del servidor mock, escenarios de prueba, validación de esquemas y ejecuciones de CLI. Los planes de pago comienzan en $9 por usuario al mes.
La decisión no depende solo de la licencia. Depende de si necesitas mantener una plataforma de contratos impulsados por consumidores o prefieres un flujo spec-first que también cubra diseño, documentación, mocks y pruebas.
Si quieres consolidar herramientas de API, revisa la mejor alternativa a Postman. Para una adopción desde cero, consulta el conjunto de herramientas de desarrollo contract-first.
Migrar desde Pact
No conviertas archivos pact directamente. Promueve OpenAPI a contrato central.
1. Obtén una especificación OpenAPI real
Si ya tienes una especificación, impórtala en Apidog. Se convierte en documentación, mocks y reglas de validación.
Si no la tienes:
- Genera OpenAPI desde anotaciones o código.
- Usa los archivos pact como inventario de endpoints y respuestas consumidas.
- Completa tipos, errores y campos requeridos que falten.
2. Activa la validación de esquema en CI
Crea escenarios de prueba para los endpoints del proveedor y ejecútalos en cada compilación:
apidog run --access-token "$APIDOG_ACCESS_TOKEN"
El objetivo es reemplazar la verificación del proveedor por pruebas contra la implementación real con validación de esquema.
3. Mueve los consumidores al mock inteligente
Sustituye mocks específicos de Pact por la URL de mock alojada.
Haz la migración de forma incremental:
- Selecciona un consumidor.
- Configura su base URL para usar el mock de Apidog.
- Añade expectativas personalizadas si necesita datos específicos.
- Elimina el DSL de Pact de ese consumidor.
- Repite con el siguiente servicio.
4. Revisa cambios de especificación
Trata las modificaciones de OpenAPI como cambios revisables:
- Usa ramas.
- Revisa diffs de esquema.
- Identifica cambios incompatibles antes del merge.
- Publica mocks y documentación desde la versión aprobada.
5. Retira el broker al final
Mantén can-i-deploy en integraciones donde el orden de despliegue independiente sea un riesgo real. Elimínalo donde solo añada ceremonia sin aportar una decisión útil.
Cuándo Pact sigue teniendo sentido
Pact es una buena elección si:
- Muchos equipos despliegan servicios de forma independiente.
- Necesitas saber si una versión concreta puede entrar en producción junto con todo lo que ya se ejecuta.
- Requieres una matriz de compatibilidad entre consumidores y proveedores.
- Necesitas pruebas de contrato para colas de mensajes.
En esos casos, Pact Broker y can-i-deploy resuelven un problema específico que Apidog no replica.
PactFlow en modo bidireccional es una opción intermedia si quieres eliminar la reproducción de interacciones sin abandonar el ecosistema de Pact.
Pero si el problema principal es detectar desviaciones de esquema, ofrecer mocks y validar CI, la especificación OpenAPI puede cubrir el caso con menos infraestructura.
Preguntas frecuentes
¿Apidog es una herramienta de pruebas de contrato como Pact?
Aplica contratos de otra forma.
Pact genera contratos por consumidor desde código de prueba y los reproduce contra proveedores. Apidog usa OpenAPI como contrato y valida solicitudes, respuestas y ejecuciones de CI contra esa especificación.
Más detalles en pruebas de contrato de API.
¿Apidog es compatible con can-i-deploy o Pact Broker?
No. Apidog no tiene una matriz de verificación ni una puerta de despliegue entre servicios.
Su puerta está en el contrato: si una compilación viola la especificación, falla su propio pipeline. Si necesitas una decisión basada en una matriz entre versiones de servicios, conserva Pact para esas integraciones.
Como alternativa intermedia, revisa pruebas de contrato bidireccionales.
¿Puede Apidog reemplazar los mocks de consumidor de Pact?
Sí, para la mayoría de los casos. El mock inteligente genera respuestas basadas en el esquema sin configuración adicional y permite definir expectativas personalizadas para escenarios específicos.
Los consumidores programan contra una URL de contrato activa en lugar de mantener DSLs de mocks.
Consulta pruebas de contrato y herramientas de mocking.
¿Qué ocurre con el fuzzing del proveedor contra la especificación?
Puedes combinar escenarios de Apidog con pruebas basadas en propiedades para ampliar la cobertura negativa contra OpenAPI.
Qué es Schemathesis explica una opción para hacerlo usando la misma especificación como entrada.
¿Cuánto cuesta PactFlow frente a Apidog?
PactFlow Starter es gratuito para 2 integraciones. Team cuesta $127 al mes, aproximadamente $1.385 facturados anualmente, para 50 integraciones. Enterprise tiene precios personalizados.
Apidog es gratuito para hasta 4 usuarios y los planes de pago empiezan en $9 por usuario al mes.
Si también comparas herramientas de captura y reproducción, revisa la mejor alternativa a Keploy.
Retira la ceremonia, conserva el contrato
Si usas Pact principalmente para detectar desviaciones de esquema, puedes obtener esa garantía desde una única especificación OpenAPI:
- Importa tu archivo OpenAPI.
- Añade escenarios de prueba para el proveedor.
- Ejecuta
apidog runen CI. - Comparte la URL del mock con los consumidores.
- Revisa los cambios de esquema antes de desplegar.
Descarga Apidog o empieza desde el navegador. Para un equipo de hasta 4 personas, el plan gratuito cubre el flujo de especificación, mock, validación y ejecución de pruebas.
Top comments (0)