Dev to webs {Coding…}

บทเรียนฟรีด้านการพัฒนาซอฟต์แวร์ ที่ครอบคลุมเนื้อหาหลากหลาย ตั้งแต่การเขียนโค้ดพื้นฐานไปจนถึงเทคนิคขั้นสูง

บทที่ 4: การเขียน Feature Test

🔹 เกริ่นนำ

Feature Test คือการทดสอบการทำงานของระบบแบบองค์รวม เช่น การทดสอบ Route, Controller และ Database พร้อมกัน เพื่อให้มั่นใจว่ากระบวนการทั้งหมดตั้งแต่รับ request จนถึง response ทำงานถูกต้อง Laravel มีเครื่องมือที่ช่วยให้เขียน Feature Test ได้ง่ายและรวดเร็ว

บทนี้จะแนะนำการสร้าง Feature Test ด้วย Artisan และตัวอย่างการทดสอบแบบครบวงจรสำหรับหน้าเว็บหรือ API

🔸 การสร้าง Feature Test Class

php artisan make:test PostFeatureTest

จะได้ไฟล์ tests/Feature/PostFeatureTest.php

🔸 ตัวอย่างการทดสอบ Route

use Tests\TestCase;

class PostFeatureTest extends TestCase
{
    public function test_homepage_can_be_accessed()
    {
        $response = $this->get('/');

        $response->assertStatus(200);
        $response->assertSee('Laravel');
    }
}

🔸 การทดสอบการสร้าง resource (เช่น post)

use App\Models\Post;

public function test_user_can_create_post()
{
    $data = ['title' => 'Test Post', 'content' => 'Test Content'];

    $response = $this->post('/posts', $data);

    $response->assertStatus(302); // redirect after success
    $this->assertDatabaseHas('posts', $data);
}

🔸 การใช้ฐานข้อมูลทดสอบ

use Illuminate\Foundation\Testing\RefreshDatabase;

class PostFeatureTest extends TestCase
{
    use RefreshDatabase;
    // ...
}

💡 Feature Test ใช้ได้ดีเมื่อคุณต้องการทดสอบกระบวนการที่ซับซ้อนหรือมีหลายส่วนร่วมกัน เช่น Auth + DB + Routing