Latihan 3 dari materi PHPUnit Dasar di Testing — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Fungsi isPrime($n) sudah ada di kode awal, biarkan. Tulis test bergaya data provider di bawahnya. Latihan ini menjalankan PHP biasa tanpa PHPUnit, jadi kamu sendiri yang memanggil test-nya untuk tiap kasus, seperti yang dilakukan PHPUnit:
Tulis function angkaProvider(): array yang mengembalikan kasusnya, tiap kasus [angka, harusnya]: [2, true], [4, false], [7, true], [9, false].
Tulis function testIsPrime(int $angka, bool $harusnya): string, dan tepat di baris atasnya attribute #[DataProvider('angkaProvider')], seperti di PHPUnit.
Di dalamnya, bandingkan isPrime($angka) dengan $harusnya memakai ===, lalu kembalikan satu baris yang menyebut assertion-nya, assertTrue untuk kasus yang harusnya true dan assertFalse untuk yang false, lalu PASS kalau cocok, misalnya assertTrue(isPrime(2)): PASS.
Di bawahnya, jalankan tiap kasus: foreach (angkaProvider() as $kasus) { echo testIsPrime(...$kasus) . "\n"; }. ...$kasus menuang isi kasus jadi dua argumen, persis cara PHPUnit memanggil test dengan data provider.
Yang dinilai: attribute #[DataProvider('angkaProvider')] di atas function test-nya, function angkaProvider dengan keempat kasus itu, nama assertTrue atau assertFalse di kodenya, dan output yang memuat PASS tanpa FAIL.
Hint
Data provider memisahkan data dari badan test: satu function yang mengembalikan kasus-kasusnya, satu function test yang dipanggil sekali per kasus.
angkaProvider() mengembalikan [[2, true], [4, false], [7, true], [9, false]]. testIsPrime($angka, $harusnya) membandingkan isPrime($angka) === $harusnya dan memilih nama assertion dari $harusnya. Tulis #[DataProvider('angkaProvider')] tepat di atasnya.