Mengenal PHP Unit: Fitur Testing pada Laravel dan Cara Membuatnya

Hai Sobat BWA!🙌

Testing adalah sebuah proses yang digunakan dalam pengembangan software untuk memeriksa dan memastikan kode bekerja dengan baik sesuai dengan yang diharapkan. Laravel, salah satu framework PHP yang populer, memiliki fitur testing yang sangat lengkap dan memudahkan developer dalam melakukan testing. Penasaran dengan bagaimana cara menggunakan fitur tersebut? Simak artikel berikut sampai habis ya!

Apa itu PHP Unit?

PHPUnit adalah kerangka kerja testing yang digunakan oleh Laravel untuk unit testing. Laravel mempunyai integrasi native dengan PHPUnit dan membuatnya mudah untuk menulis dan menjalankan tes. Unit testing ini sudah ter-install otomatis bersamaan saat kita meng-install Laravel.

Fitur testing pada Laravel mendukung berbagai jenis testing, termasuk unit testing, feature testing, dan browser testing. Unit testing biasanya digunakan untuk menguji sebuah fungsi atau method secara individu. Sedangkan feature testing digunakan untuk menguji sebuah fitur secara keseluruhan. Browser testing digunakan untuk menguji aplikasi Laravel seperti yang akan dilakukan oleh user melalui browser.

Secara umum, direktori tests pada Laravel terdiri dari 2 direktori yaitu sebagai berikut:

api dan tools (3).png
  1. Direktori Unit: Direktori ini difokuskan untuk menguji function, methods, atau class. Tes unit bertujuan untuk menguji apakah unit kode berjalan seperti yang diharapkan.
  2. Direktori Feature: Direktori feature difokuskan pada pegujian bagian yang lebih besar dari aplikasi. Contohnya untuk menguji bagaimana berbagai komponen dalam aplikasi berinteraksi satu sama lain. Jenis tes ini juga dapat digunakan untuk testing sebuah permintaan HTTP lengkap.

Cara Membuat Test Baru pada Laravel

Pada contoh kali ini, kita akan menguji fungsi ‘create pada aplikasi yang kita punya. Ikuti langkah-langkah berikut mulai dari awal ya!

1. Buat project Laravel dengan perintah berikut

composer create-project laravel/laravel be_test 

2. Buat tabel baru pada database dan jangan lupa untuk konfigurasi file .env

3. Buat file migration dengan mengetik perintah berikut pada command prompt

php artisan make:migration create_task_table

4. Lalu, isikan file migration dengan code berikut

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateTaskTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('tasks', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->text('description')->nullable();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('tasks');
    }
}

5. Jalankan perintah php artisan migrate untuk melakukan migrasi database

6. Kemudian buat model dengan menjalankan perintah php artisan make:model Task kemudian isikan kode berikut pada file model

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Task extends Model
{
    use HasFactory;

    protected $fillable = [
        'title',
        'description',
    ];
}

7. Setelah selesai membuat model, buat controller dengan menjalankan perintah php artisan make:controller TaskController

8. Buka file TaskController dan isikan kode berikut

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Task;

class TaskController extends Controller
{
    public function index()
    {
        $tasks = Task::all();
        return view('tasks.index', compact('tasks'));
    }

    public function store(Request $request)
    {
        $request->validate([
            'title' => 'required',
            'description' => 'required',
        ]);

        Task::create($request->all());

        return redirect()->route('tasks.index')->with('success', 'Task created successfully.');
    }

    public function edit(Task $task)
    {
        return view('tasks.edit', compact('task'));
    }

    public function update(Request $request, Task $task)
    {
        $request->validate([
            'title' => 'required',
            'description' => 'required',
        ]);

        $task->update($request->all());

        return redirect()->route('tasks.index')->with('success', 'Task updated successfully.');
    }

    public function destroy(Task $task)
    {
        $task->delete();

        return redirect()->route('tasks.index')->with('success', 'Task deleted successfully.');
    }
}

9. Setelah selesai membuat hal-hal di atas, sekarang kita akan membuat file untuk proses testing menggunakan PHPUnit. Jalankan perintah berikut untuk membuat file test

php artisan make:test TaskTest --unit

Folder TaskTest akan terletak dalam direktori tests/Unit

10. Buka file TaskTest.php dan salin kode berikut

<?php

namespace Tests\Unit;

use Tests\TestCase;
use App\Models\Task;
use Illuminate\Foundation\Testing\RefreshDatabase;

class TaskTest extends TestCase
{
    use RefreshDatabase;

    /** @test */
    public function it_can_create_a_task()
    {
        // Arrange
        $data = [
            'title' => 'Learn Laravel',
            'description' => 'Write unit tests for Laravel applications'
        ];

        // Act
        $task = Task::create($data);

        // Assert
        $this->assertInstanceOf(Task::class, $task);
        $this->assertEquals('Learn Laravel', $task->title);
        $this->assertEquals('Write unit tests for Laravel applications', $task->description);
    }
}

Test di atas adalah untuk melakukan uji coba apakah fungsi ‘create’ dapat berjalan dengan semestinya

11. Untuk menjalankan test, ketik perintah berikut pada command prompt

php artisan test

12. Dan jika test yang dijalankan berhasil akan muncul seperti ini

Kesimpulan

Itulah penjelasan mengenai ‘Apa itu PHPUnit dan Bagaimana Cara Menggunakannya pada Laravel’. Dengan menggunakan fitur ini, testing dapat dilakukan dnegan lebih cepat dan tanpa ribet. Fitur ini sangat membantu dan memudahkan kita dalam menyusun Testing Script Automation. Semoga artikel ini bermanfaat dan bagi kalian yang tertarik untuk mempelajari tentang Laravel, kalian bisa mempelajarinya secara gratis melalui BuildWithAngga loh! Jangan lupa kepoin kelas-kelasnya ya! Sampai jumpa di artikel selanjutnya🙌