🔹 เกริ่นนำ
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