Supertest · NestJS Validation และ Error
HTTP Error Status Matrix
จัดกลุ่ม behavior ของ 400, 404 และ 409 ให้ test อ่านเป็นระบบ
จัด error ให้เป็น matrix
การเขียน error test แบบกระจัดกระจายทำให้สับสนว่า status แต่ละตัวสื่ออะไร สร้าง matrix จาก input branch จะช่วยให้ test suite ครอบคลุมและไม่ใช้ 400, 404, 409 แทนกันตามความเคยชิน
HTTP error matrixTEXT
status เป็นสัญญาระหว่าง server กับ caller จึงควรมีชื่อ test ที่บอกเหตุผล
เขียน case ให้ไม่ทับกัน
| case | setup | assertion |
|---|---|---|
| 400 | ส่ง title ว่าง | ไม่ลงไปถึง persistence |
| 404 | ใช้ id รูปแบบถูกแต่ไม่มี row | resource not found |
| 409 | สร้าง title เดิมสองครั้ง | duplicate conflict |
กฎสำคัญ
setup
Arrange ต้องสร้างเหตุผลของ error
409 ต้องมีข้อมูลเดิมก่อน ส่วน 404 ต้องมั่นใจว่า id ไม่มีอยู่จริง
mapping
อย่า assert 500 จากทุก exception
error ที่คาดการณ์ได้ควรถูก map เป็น 4xx ที่มีความหมาย ไม่ใช่ปล่อยเป็น internal error