Supertest · Test Database และ Module Boundary
Test Database Boundary
แยก test database ออกจาก development และ production database
E2E ต้องรู้ว่ากำลังเขียน database ไหน
เมื่อ E2E ใช้ PostgreSQL/Prisma จริง test จะเปลี่ยน state ของ database การแยก test database ออกจาก development และ production จึงเป็น safety boundary ไม่ใช่แค่ convenience
แยก database ตาม environmentTEXT
ชื่อ database เป็นตัวอย่าง ควรใช้ credential และ host ตามระบบจริงของทีม
สิ่งที่ boundary นี้ป้องกัน
| ความเสี่ยง | ถ้าไม่แยก | หลักป้องกัน |
|---|---|---|
| ข้อมูลหาย | test ลบข้อมูล dev | ใช้ dedicated test database |
| ข้อมูลรั่ว | test เห็นข้อมูล production | ห้ามใช้ production URL ใน test |
| ผลไม่ซ้ำเดิม | state เก่าทำให้ test ผ่าน/เสียสลับกัน | cleanup และ fixture deterministic |
i
หยุดทันทีเมื่อ URL ผิด
เพิ่ม guard ที่ปฏิเสธ DATABASE_URL ที่ชี้ production ก่อน suite เริ่ม อย่าหวังว่า developer จะจำได้ทุกครั้ง