Run a Code Once Before All Tests Started (Laravel, PHPUnit Optimization) #indonesian
Optimasi Laravel dan PHPUnit test
Assalamu’alaikum Warahmatullahi Wabarakatuh
Kali ini kita akan belajar bagaimana melakukan optimasi untuk file testing. Masalah yang biasa dialami adalah menunggu selesainya testing dengan waktu yang sangat lama. Tentu ini hal yang membuang-buang waktu kita. Perhatikan hasil test berikut:
Diatas adalah hasil dari testing yang belum di-optimasi. Itu terjadi karena di saat melakukan testing, kita membutuhkan relasi dari table lain untuk mendapatkan data. Jadi yang saya lakukan adalah menjalankan seeder
setiap kali akan membuat fake data
. Padahal itu menjadikan testing ini memakan banyak waktu.
Jadi gimana solusinya? Untuk masalah ini, kita sebenarnya bisa melakukan seeding di awal, setiap sebalum test dijalankan (bukan disetiap test/method).
Untuk melakukannya, kita perlu menambahkan file yang berisi sebuah trait MigrateFreshSeedOnce
pada folder test
seperti gambar berikut:
Lalu diisi kode seperti di bawah ini:
Kemudian kita perlu menggunakan trait
diatas dengan menambahkannya pada file TestCase.php
seperti ini:
abstract class TestCase extends BaseTestCase{
use CreatesApplication, DatabaseTransactions, MigrateFreshSeedOnce;
}
Sebagai tambahan, kita bisa menambahkan trait DatabaseTransaction
agar database kita kembali kosong setelah menjalankan semua trait.
Hasilnya bisa kita lihat di bawah ini:
Sekian untuk kali ini. Semoga Bermanfaat.
Wassalamu’alaikum warahmatullahi Wabarakatuh…