Pruebas
Ejecuta las pruebas, simula proveedores y valida las integraciones.
En esta página
Las pruebas están diseñadas para ser herméticas con respecto a los proveedores:
- No necesitan credenciales reales para OpenAI, Google, Azure, agregadores o cualquier otro proveedor.
bun run --filter @boelabs/ai-gateway-api test,bun run --filter @boelabs/ai-gateway-api test:unitybun run --filter @boelabs/ai-gateway-api test:integrationimportanapps/api/tests/support/noRealFetch.ts, que bloquea cualquierfetchreal.- Si una prueba necesita simular un upstream, debe utilizar
withStubbedFetch()detests/support/fetch.ts.
Capas
| Capa | Guión | Dependencias externas |
|---|---|---|
| Unidad/contrato | bun run --filter @boelabs/ai-gateway-api test o bun run --filter @boelabs/ai-gateway-api test:unit | Ninguna red real. Vive junto al código en apps/api/src/**/*.test.ts. |
| Integración | bun run --filter @boelabs/ai-gateway-api test:integration | Postgres/Redis locales si la prueba los necesita; si no están disponibles, se omite. Vive en apps/api/tests/integration/**/*.ts. Nunca un verdadero proveedor. |
| Todo | bun run --filter @boelabs/ai-gateway-api test:all | Unidad + integración. |
| Validación de catálogo | bun run --filter @boelabs/ai-gateway-api catalog:validate | Ninguna red real; valida JSON local. |
Ayudantes comunes
tests/support/fetch.ts: stubs del proveedor upstream (withStubbedFetch,jsonResponse).tests/support/app.ts: una mini aplicación Hono para endpoints/v1/*con errores de autenticación, ID de solicitud y compatibles con OpenAI.tests/support/infra.ts: Detección/desmontaje de Postgres y Redis.tests/support/integrationCleanup.ts: limpieza defensiva para filas de prueba de integración con sufijo UUID antes y después de cada archivo de integración.tests/support/wait.ts: sondeo de efectos asíncronos de activar y olvidar (registros, cache, Redis).apps/api/tests/support/noRealFetch.ts: protección global contra acceso real a la red.
Escotilla de escape
Para una prueba manual única en Internet:
ALLOW_TEST_NETWORK=1 bun run --filter @boelabs/ai-gateway-api testNo utilizarlo en CI ni en pruebas normales; Si el comportamiento de un proveedor es importante, capture la forma mínima y simulela con withStubbedFetch().