Vitest · Test ที่เชื่อถือได้
อ่าน Failure Output
อ่านชื่อ test, diff, expected, received และตำแหน่งที่ fail
Failure output คือหลักฐาน ไม่ใช่คำตัดสินสุดท้าย
เมื่อ test fail ให้มอง output เป็นข้อมูลสำหรับหาความแตกต่างระหว่าง expected กับ received ก่อน อย่ารีบแก้ assertion ให้ตรงกับค่าที่โค้ดคืนโดยไม่ถามว่า behavior ที่ถูกต้องควรเป็นอะไร
เครื่องหมาย - มักชี้ expected ส่วน + ชี้ received แต่ควรอ่าน label ที่ Vitest แสดงประกอบด้วย
| ส่วนที่อ่าน | คำถามที่ควรถาม |
|---|---|
| ชื่อ test | behavior ข้อใด fail |
| Expected | เราคาดหวังอะไร |
| Received | โปรแกรมคืนอะไรจริง |
| ตำแหน่ง file/line | เริ่มตรวจจากจุดใด |
อ่าน failure ทีละบรรทัด
เริ่มจากชื่อ test เพื่อรู้คำถาม จากนั้นอ่าน Expected และ Received เพื่อเห็นความต่าง แล้วใช้ตำแหน่งไฟล์เป็นจุดเริ่ม trace การอ่านตามลำดับนี้ดีกว่ากระโดดแก้บรรทัดแรกที่เห็น
เครื่องหมายชี้ตำแหน่งบอกว่าการตรวจอยู่ตรงไหน แต่ยังต้องย้อนกลับไปดู input และ contract ว่าควรแก้ source หรือ test
ถ้า Expected ถูกต้องและ Received ผิด ให้ trace source ต่อ ถ้า Expected เองไม่ตรง requirement ให้แก้ test ให้สะท้อน behavior ที่ถูกต้องก่อน อย่าใช้ output เป็นข้อกำหนดโดยอัตโนมัติ
แยก test bug กับ source bug
Failure อาจเกิดจาก source code ทำงานผิด หรือ test เขียน expected ผิดก็ได้ ให้ตรวจ requirement, input และ action ตามลำดับ ถ้า expected ไม่ตรง contract การแก้ source ให้คืนค่าตาม test จะทำให้ test กลายเป็นข้อกำหนดที่ผิด
กฎสำคัญ
อ่าน Expected ก่อนแก้
ยืนยันว่า expected สอดคล้องกับ behavior ที่ตกลงไว้ ไม่ใช่เพียงค่าที่คนเขียน test เดา
อ่าน Received แล้ว trace Act
ดู input และ function ที่ถูกเรียกว่ามีการส่งค่าผิดหรือ implementation เปลี่ยน behavior หรือไม่
แก้สาเหตุ ไม่ปิดเสียงเตือน
อย่าเปลี่ยน assertion เป็นค่าที่ได้รับเพียงเพื่อให้เครื่องหมายผ่าน
แบบฝึก: อ่าน diff
จาก failure ที่ให้ ระบุ expected, received และสมมติฐานแรกที่ควรตรวจ
งานที่ต้องทำ
- บอกว่า test คาดหวังค่าใด
- บอกว่า source คืนค่าใด
- บอกว่าจะตรวจ requirement หรือ implementation จุดใดก่อน
ลองทำด้วยตัวเองก่อน แล้วค่อยเปิดเฉลยเพื่อเทียบแนวคิดและรายละเอียด