Vitest · โครงสร้างของ Test
`test()`
สร้าง test case หนึ่งข้อด้วยชื่อและ callback ที่บอก behavior
หนึ่ง test case คือหนึ่งคำถาม
ฟังก์ชัน test() ใช้ประกาศกรณีทดสอบหนึ่งข้อ รับชื่อที่อธิบาย behavior และ callback ที่ Vitest จะเรียกตอนรัน test ชื่อกับ callback ทำงานคู่กัน: ชื่อบอก intent ส่วน callback บอกขั้นตอนที่ใช้พิสูจน์
กฎสำคัญ
ชื่อเป็นประโยคของ behavior
อ่านชื่อแล้วควรรู้ว่าระบบควรทำอะไรในสถานการณ์ใด
callback คือขอบเขตของ test
คำสั่งที่อยู่ใน callback จะถูกรันเมื่อ Vitest เรียก test case นี้
หนึ่ง test ไม่ควรแบกหลายคำถาม
ถ้าต้องตรวจคนละ behavior ให้แยกเป็นหลาย test เพื่อให้ failure ชี้จุดได้
test ว่างอาจผ่าน แต่ยังไม่พิสูจน์อะไร
เมื่อ callback ยังว่าง Vitest มองว่าไม่มีคำสั่งใดล้มเหลว จึงอาจรายงานว่า test ผ่านได้ แต่การผ่านแบบนี้ยังไม่ตอบคำถามของเรา เพราะยังไม่มีการเรียก source code และยังไม่มีการตรวจ expected behavior
ผ่าน ไม่ได้แปลว่าตรวจครบ
test ที่ดีต้องมีคำถามและหลักฐานของคำตอบ ไม่ใช่เพียง callback ที่รันจบโดยไม่มี error
แบบฝึก: สร้าง test case จาก behavior
เขียน test skeleton สำหรับ behavior “สร้าง Task ใหม่ให้ยังไม่เสร็จ” โดยยังไม่ต้องเติม assertion
งานที่ต้องทำ
- import test จาก vitest
- ตั้งชื่อ test ให้มี behavior และเงื่อนไข
- ใส่ callback เปล่าที่พร้อมเติมในบทถัดไป
ลองทำด้วยตัวเองก่อน แล้วค่อยเปิดเฉลยเพื่อเทียบแนวคิดและรายละเอียด