ซีรีส์ Testing ใน Laravel

6 ตอน อ่านรวมประมาณ 27 นาที

การเขียน test ในโปรเจกต์ Laravel ทีละเรื่อง เริ่มจาก Pest และของใหม่ใน Pest 5 ต่อด้วยการรันเฉพาะ test ที่โค้ดเปลี่ยน ฐานข้อมูลสำหรับ test การกันไม่ให้ test ออกไปข้างนอก แล้วจบที่ Vitest ฝั่ง React

  1. 1

    Pest คืออะไร และเขียน test ต่างจาก PHPUnit ตรงไหนบ้างในโปรเจกต์ Laravel

    Pest เป็นเครื่องมือเขียน test ของ PHP ที่ทำงานอยู่บน PHPUnit ตัวเดิม แต่เขียนเป็นฟังก์ชันสั้น ๆ แทน class โพสต์นี้เทียบ test เดียวกันทั้งสองแบบ อธิบาย expect(), dataset, arch test คำสั่งที่ใช้บ่อย และการให้ AI agent รัน test

    · อ่าน 5 นาที

  2. 2

    Pest 5 มีอะไรใหม่ ตั้งแต่ TIA, plugin สำหรับ AI agent ไปจนถึง PHPStan และ Rector

    Pest 5 ออกเมื่อปลายเดือนกรกฎาคม 2026 ต้องใช้ PHP 8.4 และ PHPUnit 13 อัปเกรดจาก Pest 4 ได้ด้วยการแก้เวอร์ชันใน composer.json ของใหม่ที่เด่นคือ TIA, plugin ให้ AI agent ลองโค้ดใน test, Evals และ plugin ของ PHPStan กับ Rector

    · อ่าน 5 นาที

  3. 3

    TIA ใน Pest 5 คืออะไร และวิธีรันเฉพาะ test ที่โค้ดที่เราแก้ไปถึง

    TIA ใน Pest 5 จดไว้ว่า test แต่ละตัววิ่งผ่านไฟล์ไหน แล้วรอบต่อไปรันเฉพาะตัวที่ไฟล์นั้นเปลี่ยน โพสต์นี้มีตัวเลขจากโปรเจกต์ลูกค้าที่รอบเต็ม 201 วินาทีเหลือ 10 วินาที วิธีตั้ง pcov และจุดที่ทำให้ผลเขียวทั้งที่ไม่ได้รัน test

    · อ่าน 5 นาที

  4. 4

    จัดฐานข้อมูลสำหรับ test ใน Laravel ด้วย snapshot ที่ commit ไว้ และ DatabaseTransactions แทน RefreshDatabase

    RefreshDatabase ล้างฐานข้อมูลด้วย migrate:fresh ซึ่งเราปิดไว้ในทุก environment เราจึงโหลดตารางและข้อมูลตั้งต้นจากไฟล์ SQL ที่ commit ไว้ใน repo แล้วห่อแต่ละ test ด้วย transaction โพสต์นี้อธิบายเหตุผล ขั้นตอนใน CI และสิ่งที่เปลี่ยนไปตอนเขียน test

    · อ่าน 4 นาที

  5. 5

    กัน test ใน Laravel ไม่ให้ส่งอีเมล ยิง API หรือเข้าคิวจริง ด้วย fake ที่เปิดไว้ทุก test

    test ที่ลืม Mail::fake() แค่ตัวเดียวก็ส่งอีเมลจริงออกไปได้ เราจึงเปิด fake ของอีเมล คิว notification และกัน HTTP request ไว้ใน TestCase ให้ทุก test แล้วตั้งค่าใน phpunit.xml ปิดอีกหลายทาง พร้อม test ที่ยืนยันว่าทุกทางยังปิดอยู่

    · อ่าน 4 นาที

  6. 6

    เขียน test ให้ component React ในโปรเจกต์ Laravel ที่ใช้ Inertia ด้วย Vitest

    test ฝั่ง PHP ตรวจได้ว่า Laravel ส่ง props อะไรให้หน้า แต่ไม่รู้ว่าหน้านั้น render ออกมาได้จริงไหม Vitest กับ Testing Library ปิดช่องนี้ โพสต์นี้อธิบายการตั้ง vitest.config.js แยกจาก Vite, ไฟล์ setup, การ mock Inertia, test ฝั่ง SSR และการวางใน CI

    · อ่าน 4 นาที