pada tulisan sebelumnya kita sudah membahas sekilas dasar dari phpunit
, pada bagian kedua ini kita akan mencoba beberapa fitur dasar lainya dari phpunit
, sehingga nantinya diharapkan bisa membantu kita untuk lebih mudah dalam menulis kode test, kita akan mencoba membahas Data Provide
r, jadi jika teman-teman belum membaca tulisan sebelumnya saya sarankan membacanya dulu agar tidak bingung.
Data Provider
Jika kita terjemahkan kedalam bahasa sederhana, kita bisa meng-anggapnya sebagai penyuplai data atau penyedia data atau pengatur data, pada unit testing jika kita menggunakan data provider
kita bisa mempersingkat penulisan kode untuk test. penggunaan data provider
ini menggunakan notasi atau annotation @dataProvider
sebuah data provider
haruslah berbentuk public
, dan mengembalikan data dalam bentuk array
, mari kita lihat kode dibawah ini
public function tambahDataProvider()
{
return [
'cek string' => ['a','b','Error'],
'cek basic' => [1,2,3],
'cek nol' => [0,0,0],
'cek minus' => [-1,-1,-2],
'cek min-plus' => [-1,1,0]
];
}
jika kita perhatikan barisan kode diatas, tidak ada bedanya dengan array
biasa, tetapi format penulisan data provider
dalam array
ada aturanya, misalnya fungsi yang kita uji memiliki 2
parameter, $a
dan $b
maka data provider
haruslah mengembalikan dalam bentuk[$a, $b, $hasil]
atau sama dengan [1,2,3]
, mari kita coba implementasikan
<?php
use PHPUnit\Framework\TestCase;
use Ezadev\Contoh\Kalkulator;
class KalkulatorTest extends TestCase
{
private $kalkulator;
protected function setUp():void
{
$this->kalkulator = new Kalkulator;
}
protected function tearDown():void
{
$this->kalkulator = null;
}
public function tambahDataProvider()
{
return [
'cek string' => ['a','b','Error'],
'cek basic' => [1,2,3],
'cek nol' => [0,0,0],
'cek minus' => [-1,-1,-2],
'cek min-plus' => [-1,1,0]
];
}
/**
* @dataProvider tambahDataProvider
*/
public function test_fungsi_tambah_dengan_data_provider($a, $b, $hasil_yang_diharapkan)
{
$hasil = $this->kalkulator->tambah($a,$b);
$this->assertEquals($hasil_yang_diharapkan, $hasil);
}
}
kode diatas tidak jauh berbeda dengan kode test kita sebelulmnya, hanya saja fungsi test_
yang lain kita hilangkan dan diganti dengan memanfaatkan data provider
, jika teman-teman perhatikan terdapat satu annotation dengan nama @dataProvider
dengan nilai tambahDataProvider
ini menunjukan jika fungsi test_fungsi_tambah_dengan_data_provider()
akan menggunakan data provider
dari fungsi tambahDataProvider()
tanpa melakukan loop
atau perulangan phpunit
cukup pintar untuk melakukan pengulangan sebanyak data yang ada pada tambahDataProvider()
tentu saja hasilnya akan sama dengan hasil test kita sebelumnya, point nya data provider
bersifat re-useable
dan kita bisa menggunakanya berkali-kali jika memang dibutukan, nah pada kondisi ini teman-teman pasti bisa mengira-ngira kapan kira-kira kita bisa menggunakan data provider
dan kapan sekiranya kita tidak menggunakanya.