Assertions คืออะไร
Assertion คือประโยคที่ใช้ยืนยันว่าผลลัพธ์ที่ได้ตรงกับสิ่งที่เราคาดหวังจริง ๆ และเป็นหัวใจที่ทำให้ test พิสูจน์ behavior ได้มากกว่าแค่รันผ่าน
คิดแบบสั้นที่สุด
ถ้า test คือคำถาม assertion ก็คือคำตอบที่เราคาดว่าโปรแกรมควรให้กลับมาอย่างชัดเจน
Assertion ทำหน้าที่อะไร
เวลาเราเขียน test เราไม่ได้อยากรู้แค่ว่าโค้ดรันจบหรือไม่ แต่เราอยากรู้ว่าผลลัพธ์สุดท้ายตรงกับสิ่งที่ระบบควรทำจริงหรือเปล่า Assertion จึงเป็นส่วนที่ใช้ยืนยันความคาดหวังนั้นอย่างเป็นรูปธรรม
ต่างจากแค่รันผ่านยังไง
โค้ดที่ไม่ error อาจยังให้คำตอบผิดได้เสมอ Assertion ช่วยเปลี่ยน test จากการดูว่าโปรแกรมพังไหม ไปเป็นการตรวจว่า behavior ถูกต้องไหม
Point 1
function คำนวณส่วนลดแล้วต้องคืนค่า total ที่ถูกต้อง
Point 2
submit form โดยข้อมูลไม่ครบแล้วต้องขึ้นข้อความ error ที่ตรงจุด
Point 3
เพิ่มสินค้าเข้าตะกร้าแล้วจำนวน item ต้องเพิ่มตามที่คาด
ลักษณะของ assertion ที่ดี
Assertion ที่ดีควรบอกได้ชัดว่าเรากำลังพิสูจน์อะไร และเมื่อ fail แล้วควรช่วยให้เข้าใจทันทีว่าความคาดหวังข้อไหนไม่ตรงกับความจริง
- เฉพาะเจาะจงพอจะสื่อ intent ได้ชัด
- ตรวจสิ่งที่สำคัญต่อ behavior จริง ไม่ใช่รายละเอียดจุกจิก
- อ่านแล้วรู้ทันทีว่าระบบควรทำอะไร
- fail แล้วพอเดาได้ว่าปัญหาอยู่ตรงไหน