Supertest · Test Database และ Module Boundary
Seed และ Fixtures
สร้างข้อมูลตั้งต้นที่ deterministic และอ่านง่าย
Seed คือข้อมูลที่ตั้งใจให้มี
Seed/fixture ช่วยสร้าง actor และ resource ที่ test ต้องใช้ เช่น user, role และ Todo ของ user นั้น ข้อมูลควรมีชื่อสื่อความหมายและสร้างซ้ำได้โดยไม่ชนหรือ reset ได้ก่อนสร้าง
สร้าง user และ Todo fixtureTS
Fixture ต้องเป็น Arrange ที่อ่านได้
ถ้า test ทุกข้อมี object fixture ยาว ๆ ซ้ำกัน ให้สร้าง factory ที่รับ input สำคัญ เช่น role, owner และ title แต่ยังคงชื่อ helper ที่อ่านแล้วรู้ว่าเตรียม state อะไร
กฎสำคัญ
identity
หลีกเลี่ยง magic id
ใช้ id ที่คืนจาก create แล้วส่งต่อ ไม่ assume ว่า owner id จะเป็น 1
minimal
ข้อมูลต้องตรงกับคำถาม
อย่า seed user สามคนถ้า test ต้องพิสูจน์แค่ owner กับ other user เพราะ state ส่วนเกินทำให้ intent เบลอ