Vitest · โครงสร้างของ Test
`it()`
เข้าใจว่า `it()` เป็น alias ของ `test()` และเลือก style ได้อย่างสม่ำเสมอ
it() กับ test() ทำงานเหมือนกัน
it() เป็น alias ของ test() ใน Vitest ความแตกต่างอยู่ที่สไตล์การอ่านชื่อ ไม่ใช่ความสามารถหรือระดับความแรงของ test ทั้งสองตัวรับชื่อและ callback แบบเดียวกัน เลือก style ที่ทีมใช้สม่ำเสมอได้เลย
ในโปรเจกต์จริงไม่จำเป็นต้องเขียน test เดิมซ้ำ ให้เลือกแบบใดแบบหนึ่ง
| คำถาม | คำตอบ |
|---|---|
| it() รันช้ากว่าไหม | ไม่ ต่างกันที่ชื่อ API เท่านั้น |
| ใช้ร่วมกับ describe() ได้ไหม | ได้เหมือน test() |
| ควรเลือกแบบไหน | เลือกตาม convention ของ codebase |
แปลชื่อ test ให้เป็นภาษาคน
เวลาอ่าน `it("returns an incomplete task")` ให้ลองเติมประธานในใจว่า “ระบบนี้ควร…” ส่วน `test("creates an incomplete task")` อ่านตรง ๆ ได้ว่า “กรณีทดสอบนี้ตรวจว่า…” ทั้งสองแบบยังเรียก callback และรายงานผลเหมือนกัน
ในไฟล์จริงไม่จำเป็นต้องประกาศสองข้อพร้อมกัน ตัวอย่างนี้วางคู่กันเพื่อให้เห็นว่า API ทั้งสองมี contract เดียวกัน
อ่านชื่อให้เป็นประโยค
it มักอ่านเป็นประโยคธรรมชาติ
เช่น it("returns an incomplete task") อ่านได้ใกล้กับ “มันควรคืน Task ที่ยังไม่เสร็จ” ส่วน test() ก็สื่อความหมายเดียวกัน เพียงใช้คำขึ้นต้นต่างกัน
กฎสำคัญ
อย่าสลับ style แบบไร้เหตุผล
การใช้ test และ it ปนกันในไฟล์เดียวทำให้ผู้อ่านต้องเดา convention ของทีม
ชื่อยังสำคัญกว่า API ที่เลือก
ชื่อที่บอก behavior ช่วย debug มากกว่าการถกว่าควรใช้ test หรือ it
แบบฝึก: เปลี่ยน style โดยไม่เปลี่ยน behavior
เปลี่ยน test skeleton ให้ใช้ it() โดยคง behavior และ callback เดิม
งานที่ต้องทำ
- เปลี่ยน import ให้ใช้ it
- คงชื่อ behavior เดิม
- อย่าเพิ่ม matcher หรือ logic ใหม่
ลองทำด้วยตัวเองก่อน แล้วค่อยเปิดเฉลยเพื่อเทียบแนวคิดและรายละเอียด