Supertest · Test Database และ Module Boundary
Prisma Client Lifecycle
ควบคุมการเชื่อมต่อและการปิด Prisma client ใน test suite
Prisma client ก็มี lifecycle
Prisma client เปิด connection กับ database และอาจทำให้ Node process ไม่จบถ้าไม่ disconnect การสร้าง E2E app และ Prisma client จึงต้องมีเจ้าของ lifecycle ที่ชัดเจน
แยก app lifecycle กับ database lifecycle
| resource | เปิดเมื่อ | ปิดเมื่อ |
|---|---|---|
| Nest application | หลัง compile module | afterAll ด้วย app.close() |
| Prisma client | ก่อน query/migration | afterAll ด้วย $disconnect() |
| agent/session | ก่อน auth flow | จบ scope ของ test หรือ suite |
i
open handle คือสัญญาณ ไม่ใช่ noise
ถ้า Jest เตือนว่า process ไม่จบ ให้ trace resource ที่เปิดค้างก่อนเพิ่ม `--forceExit` เพราะ flag นั้นอาจซ่อน lifecycle bug