Feature Testing


Feature testing dalam Laravel adalah cara untuk menguji fitur-fitur aplikasi Anda dari perspektif pengguna, memastikan bahwa aplikasi berfungsi seperti yang diharapkan. Berikut adalah panduan lengkap tentang bagaimana melakukan feature testing di Laravel.

1. Persiapan

Sebelum memulai, pastikan Anda sudah menginstal Laravel dan memiliki lingkungan pengujian yang telah disiapkan. Anda bisa menggunakan SQLite atau MySQL sebagai database untuk pengujian.

2. Membuat Test Case

Untuk membuat test case baru, Anda dapat menggunakan Artisan command. Buka terminal dan jalankan:

php artisan make:test ExampleFeatureTest

Ini akan membuat file test baru di dalam direktori tests/Feature.

3. Menulis Test

Buka file yang baru saja Anda buat di tests/Feature/ExampleFeatureTest.php. Anda akan melihat struktur dasar yang telah dibuat oleh Laravel. Berikut adalah contoh pengujian fitur menggunakan Laravel:

<?php

namespace Tests\Feature;

use Tests\TestCase;

class ExampleFeatureTest extends TestCase
{
    /** @test */
    public function it_loads_the_home_page()
    {
        $response = $this->get('/');

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

    /** @test */
    public function it_creates_a_new_post()
    {
        $response = $this->post('/posts', [
            'title' => 'New Post',
            'body' => 'This is the content of the new post.',
        ]);

        $response->assertStatus(201);
        $this->assertDatabaseHas('posts', [
            'title' => 'New Post',
        ]);
    }
}

Penjelasan

  • $this->get('/'): Mengirimkan permintaan GET ke URL yang ditentukan.
  • assertStatus(200): Memastikan bahwa response HTTP kembali dengan status 200 (OK).
  • assertSee('Welcome'): Memastikan bahwa konten 'Welcome' muncul di halaman yang diminta.
  • $this->post('/posts', [...]): Mengirimkan permintaan POST untuk membuat entri baru ke route yang ditentukan.
  • assertStatus(201): Memastikan bahwa entri telah berhasil dibuat dengan status 201 (Created).
  • assertDatabaseHas('posts', [...]): Memastikan bahwa database memuat entri dengan field yang sesuai.

4. Menjalankan Test

Untuk menjalankan semua test, Anda dapat menggunakan perintah:

php artisan test

Atau, jika Anda hanya ingin menjalankan test tertentu:

php artisan test --filter ExampleFeatureTest

5. Menggunakan Fitur Laravel Passport untuk Autentikasi

Jika aplikasi Anda menggunakan autentikasi, Anda dapat menguji fitur yang memerlukan autentikasi dengan menyertakan token di header:

public function test_user_can_access_protected_route()
{
    $user = User::factory()->create();
    $response = $this->actingAs($user)->get('/protected-route');

    $response->assertStatus(200);
}

6. Tips untuk Feature Testing

  • Gunakan database migrations untuk menyiapkan database sebelum setiap test dijalankan.
  • Manfaatkan factory untuk membuat data dummy yang diperlukan selama test.
  • Pisahkan pengujian berdasarkan konteks agar lebih mudah dalam membaca dan memelihara.


Feature testing adalah cara yang efektif untuk memastikan bahwa aplikasi Laravel Anda berfungsi dengan baik dari sudut pandang pengguna. Dengan mengikuti langkah-langkah di atas, Anda dapat mulai menulis dan menjalankan test untuk fitur-fitur aplikasi Anda.