Práctica focalizada · Bloque 3 · Unidad 3.2
EX-B3-09
Demostrar el ciclo de vida de un recurso
Una ruta abre y cierra manualmente un audit sink. Otro endpoint omite el cierre al lanzar una excepción y la prueba solo comprueba el status.
Cómo abordarla
Haz visible el árbol y el ciclo de vida
Ejecuta primero el baseline. Después modifica la frontera indicada, escribe una regresión positiva y otra negativa y conserva la salida real.
Evidencia objetivo: OpenAPI conserva sus parámetros, la configuración falla pronto y el recurso se libera tanto en éxito como en error.
Abrir laboratorio de código
1. Descarga y arranca
- Starter del ciclo de vidaAudit sink simulado, ruta con cleanup defectuoso, tests baseline y plantilla de cronología.
2. Escribe y prueba
- Predice la traza de éxito y de fallo antes de ejecutar.
- Reproduce el recurso abierto después del error y conserva la evidencia.
- Introduce una dependencia con yield que libere en finally e inyéctala en ambas operaciones.
- Prueba éxito, fallo, aislamiento entre peticiones y orden de la traza.
3. Demuestra el comportamiento
- Código corregido y tests de lifecycle.
- Cronología prevista y observada para ambos caminos.
- Explicación del scope usado y de una alternativa descartada.
La respuesta principal es tu código y sus pruebas. Usa este espacio solo para anotar la predicción inicial y el resultado observado.
Predicción breve antes de ejecutar
¿Qué eventos deben aparecer antes, durante y después de la operación, y qué aserción demuestra que el cleanup no depende del camino feliz?
Secuencia que debes demostrar
Traza objetivo por petición: open → use → close. El caso /audit/fail conserva su error y aun así termina en close.Comprueba estas tres cosas
- ¿Qué ocurre antes de yield?
- ¿Qué valor recibe la operación?
- ¿Qué excepción no debe desaparecer durante el cleanup?
Anota predicción, comando ejecutado y diferencia observada; el código vive en tu workspace.
Sin respuesta guardada.
Pistas opcionales
Pista única · Protege la salida
- Crea el recurso antes de yield.
- Coloca close en finally y deja que la excepción siga su curso.
Profundización opcional
Mover adquisición y liberación a una dependencia con yield y demostrar el orden exacto en éxito y fallo.
Contexto adicional
- El recurso es un fake local; no añadas base de datos, red ni transacciones.
- Usa try/finally y no conviertas el error deliberado en una respuesta exitosa.
- Mantén la política por defecto de scope y explica cuándo se ejecuta el cierre.
Decisiones abiertas
- Puedes registrar la traza en el fake o inyectar un recorder separado, pero su estado debe aislarse entre tests.
Cómo revisar tu respuesta
- Cada petición abre un recurso nuevo y lo cierra exactamente una vez.
- La traza de éxito y la de fallo terminan en close.
- El error deliberado conserva su status y no es absorbido por la dependencia.
- La operación usa el valor cedido y no ejecuta cleanup manual.
- La prueba observa el estado después de completar el ciclo request/response.
Evidencia, revisión y reinicio
- Predicción temporal para éxito y excepción.
- Trazas open/use/close observadas por petición.
- Tests que prueban cleanup después de 200 y después de error sin tragarse la excepción.
Revisión: con Codex, utilizando la evidencia y los criterios anteriores; no se publica una solución oficial.
Reinicio: Volver a descomprimir ex-b3-09-yield.zip; el audit sink es un fake en memoria y no abre archivos ni conexiones.