Vitest · เริ่มต้นกับ Vitest
ตั้ง `test` script ใน `package.json`
เชื่อม package script กับคำสั่งรัน test ที่จำได้ง่าย
ทำไมต้องมี `test` script
หลังติดตั้ง Vitest แล้ว เราสามารถเรียก binary โดยตรงได้ แต่คำสั่งยาวอย่าง `pnpm exec vitest run` ไม่ควรเป็นสิ่งที่สมาชิกทีมต้องจำเองทุกครั้ง `package.json` จึงทำหน้าที่ตั้งชื่อคำสั่งมาตรฐานของโปรเจกต์
เก็บ script เดิมของโปรเจกต์ไว้ แล้วเพิ่ม key `test` เข้าไป
สองคำสั่งนี้ตั้งใจให้ทำงานเทียบเท่ากันในโปรเจกต์ตัวอย่าง
แปล `pnpm test` เป็นขั้นตอนจริง
เวลาเห็น `pnpm test` ให้แปล command เป็นสองชั้น: `pnpm` ขอให้ package manager อ่าน script ชื่อ `test` ส่วนค่าของ script คือ `vitest run` ซึ่งสั่งให้ runner ค้นหาและรัน test หนึ่งรอบ
`pnpm test` เป็นชื่อเรียกที่ทีมจำง่าย ส่วนรายละเอียดของ runner ยังถูกเก็บไว้ใน `package.json` ให้เปิดดูได้
ถ้าทีมเปลี่ยนวิธีเรียก Vitest ในอนาคต ผู้ใช้คำสั่งยังเรียก `pnpm test` แบบเดิมได้ นี่คือประโยชน์ของ script: แยกชื่อ workflow ที่ทีมใช้จากรายละเอียดภายในของเครื่องมือ
`test` script ควรทำอะไร และยังไม่ควรทำอะไร
| เหมาะกับ `test` script พื้นฐาน | ยังอยู่นอกขอบเขตบทนี้ |
|---|---|
| เรียก `vitest run` ให้รัน test ทั้งชุด | coverage และรายงานแบบละเอียด |
| เป็น command ที่สมาชิกทีมจำเหมือนกัน | การ filter รายไฟล์หรือรายชื่อ test ขั้นสูง |
| จบ process พร้อมผลลัพธ์ชัดเจน | การตั้งค่า environment หรือ CI หลายแบบ |
กฎสำคัญ
ชื่อ script ต้องตรงความหมาย
ชื่อ `test` ควรเป็นคำสั่งหลักที่ตรวจ test ตามค่าเริ่มต้นของโปรเจกต์
อย่าซ่อน command สำคัญ
ผู้เรียนควรรู้ว่า `pnpm test` เรียก `vitest run` ไม่ใช่คำสั่งพิเศษที่ทำงานโดยไม่มี runner
สรุปการตั้งคำสั่งมาตรฐาน
ถ้า command ล้มเหลว ให้เริ่มจากดู script ใน `package.json` ว่าชี้ไปยัง `vitest run` จริงหรือไม่ ก่อนตรวจรายละเอียดของ test
script คือชื่อเรียกของ workflow
มันช่วยลดสิ่งที่ผู้ใช้ต้องจำ แต่ไม่ได้แทนความเข้าใจว่า runner กำลังทำอะไรอยู่