Supertest · Test Database และ Module Boundary
Order-Independent Tests
ออกแบบข้อมูลและ setup ให้ test รันสลับลำดับได้
test ต้องสลับลำดับได้
Order-independent test คือ test ที่ผ่านหรือ fail จาก Arrange ของตัวเอง ไม่ใช่จาก test ที่รันก่อนหน้า การออกแบบแบบนี้ช่วยให้รันเฉพาะไฟล์, randomize order และ parallelize ในอนาคตได้ปลอดภัยขึ้น
อ้างข้อมูลจาก Arrange ของ test เองTS
สัญญาณของ shared state ที่ไม่ปลอดภัย
กฎสำคัญ
fragile
พึ่ง id คงที่
test ผ่านเฉพาะเมื่อ seed รันก่อนและ database ว่างตามคาด
collision
ใช้ title เดิมโดยไม่ cleanup
ทำให้ duplicate constraint จาก test อื่นถูกตีความเป็น behavior ของ test นี้
shared
แก้ global variable ใน test
state ที่แชร์ระหว่าง callback ทำให้ parallel หรือ retry ให้ผลต่างกัน
เริ่มจากทำให้แต่ละ test independent ด้วย fixture และ cleanup ก่อนเพิ่ม optimization เช่น parallel workers การทำให้เร็วโดยยังรั่ว state ไม่ใช่ improvement ที่ปลอดภัย