Test data diperlukan untuk memastikan test bisa dijalankan (karena fungsi pada hakikatnya hanya menerima parameter dan mengembalikan hasil tertentu). Test data dapat dibuat secara manual dengan cara hardcode di file test. Namun hal ini kadang menjadi kendala apabila:

  • Membutuhkan random value yang harus diuji cukup bervariasi
  • Perlu meng-generate data yang sangat banyak untuk test case

Sehingga untuk generate test data bisa kita serahkan pada faker.

Catatan: jika belum membaca post sebelumnya tentang PHPUnit, disarankan untuk membacanya terlebih dahulu, karena post ini adalah lanjutan dari post tersebut.

Install Faker

~$ composer require --dev fzaninotto/faker

Gunakan Dalam Test

Ubah file test ExampleTest.php menjadi:

<?php

use App\Employee;
use Faker\Factory as Faker;

class EmployeeTest extends PHPUnit\Framework\TestCase
{
    private $faker;

    protected function setup()
    {
        $this->faker = Faker::create();
    }

    /** @test */
    public function shouldCreateObject()
    {
        $obj = new Employee(
            $id = $this->faker->numberBetween(1, 1000),
            $name = $this->faker->name,
            $basicSalary = $this->faker->randomFloat
        );

        $this->assertEquals($id, $obj->getId());
        $this->assertEquals($name, $obj->getName());
        $this->assertEquals($basicSalary, $obj->getBasicSalary());
    }

}

Perhatikan bahwa data test tidak lagi ditulis secara hardcode tetapi diambil dari library faker. Untuk API lengkap dari faker dapat dicek di homepage faker.

Kemudian jalankan test dengan perintah seperti biasa.

~$ vendor/bin/phpunit

Finish

Source code bisa dilihat di sini. Semoga bermanfaat, Happy Coding!