Assertions (iddialar)
assertEquals, assertTrue ve assertContains gibi yaygın assertion'ları öğrenirsin.
assertEquals ve assertSame
assertEquals($expected, $actual) en sık kullanılan iddiadır. İki değeri == ile karşılaştırır; eşitse test geçer. assertSame ise hem değere hem türe bakar (===): assertSame(4, 2 + 2) geçer ama assertSame(4, "4") başarısız olur. assertEquals(4, "4") ise == ile karşılaştığından geçer. Hangisini seçeceğin testin amacına bağlıdır.
Diğer yaygın iddialar
assertTrue($x) değerin true olmasını bekler; assertFalse tam tersi. assertContains("Elma", $liste) bir dizide eleman var mı diye bakar. assertCount(3, $liste) dizinin uzunluğunu denetler. PHPUnit 50'den fazla iddia sunar; hepsi aynı mantıktadır: koşul sağlanmazsa test başarısız olur. İddiayı seçerken en anlamlısı tercih et: assertTrue($x > 0) yerine assertGreaterThan(0, $x) daha açık söyler.
Uygulama Birden fazla iddia yaz
ScoreKeeper sınıfı puan ekler ve ortalama döner. ScoreKeeperTest sınıfını TestCase'ten türet. testStats metodunda 10 ve 20 puan ekle, assertEquals ile toplamın 30, assertCount ile listede 2 eleman, assertTrue ile ortalamanın 10'dan büyük olduğunu denetle.
Örnek çözümü göster
class ScoreKeeperTest extends TestCase yaz. testStats içinde $sk = new ScoreKeeper(); $sk->add(10); $sk->add(20); $this->assertEquals(30, array_sum($sk->scores)); $this->assertCount(2, $sk->scores); $this->assertTrue($sk->average() > 10); ekle.
Örnek çözüm:
<?php
// Bu derste TestCase'i basitçe tanımlıyoruz
class TestCase {
protected function assertEquals($expected, $actual): void {
if ($expected !== $actual) {
throw new Exception("Beklenen $expected, gerçek $actual");
}
}
protected function assertTrue($condition): void {
if ($condition !== true) { throw new Exception("Koşul true değil"); }
}
protected function assertCount($expected, $actual): void {
if (count($actual) !== $expected) {
throw new Exception("Beklenen sayı $expected, gerçek " . count($actual));
}
}
}
class ScoreKeeper {
public array $scores = [];
public function add(int $p): void { $this->scores[] = $p; }
public function average(): float {
return count($this->scores) ? array_sum($this->scores) / count($this->scores) : 0;
}
}
class ScoreKeeperTest extends TestCase {
public function testStats(): void {
$sk = new ScoreKeeper();
$sk->add(10);
$sk->add(20);
$this->assertEquals(30, array_sum($sk->scores));
$this->assertCount(2, $sk->scores);
$this->assertTrue($sk->average() > 10);
}
}
// Testi çalıştır
$test = new ScoreKeeperTest();
$test->testStats();
echo "testStats: BAŞARILI\n";
Kendini test et
-
İddiaları eşleştir
- assertEquals
- Değer eşitliği
- assertSame
- Değer ve tür
- assertTrue
- true bekler
- assertContains
- Dizide var mı
-
Hangi iddia int 4 ile string "4"ü aynı saymaz?
- assertEquals(4, "4")
- assertEquals("4", "4")
- assertSame(4, "4")
- assertTrue(4 == "4")
Cevabı göster
assertSame(4, "4") — Doğru. assertSame türe de bakar; int 4 ile string "4" aynı değildir.
-
assertTrue çağrısını tamamla
<?php public function testIsAdult(): void { $user = new User(25); $this->____($user->isAdult()); }Cevabı göster
<?php public function testIsAdult(): void { $user = new User(25); $this->assertTrue($user->isAdult()); }