Ben aradım ama oldukça ben aradığım bulamıyor ve manuel bu konuda çok yardımcı değildir. Ben de tüm doğru yolda olduğumu eğer emin değil birim test için oldukça yeni, bu yüzden. Neyse, soru üzerine. Ben bir sınıf vardır:
<?php
class testClass {
public function doSomething($array_of_stuff) {
return AnotherClass::returnRandomElement($array_of_stuff);
}
}
?>
Şimdi, açıkça ben AnotherClass::returnRandomElement($array_of_stuff);
aynı şeyi her zaman geri dönmek istiyorum. Benim soru benim birim sınama, nasıl bu nesneyi mockup mi, nedir?
Ben test dosyasının üstüne AnotherClass
ekleyerek denedim, ama ben test etmek istiyorum AnotherClass
ben "sınıf Redeclare" hatası alıyorum.
Ben fabrika sınıflarını anlıyorum, ama ben bu durumda o geçerli olacak nasıl emin değilim. Ben test verileri içerdiği tamamen ayrı AnotherClass sınıf yazmak ve daha sonra yerine gerçek AnotherClass bu yüklemek için Fabrika sınıfını kullanmak gerekir? Veya Fabrika deseni sadece bir kırmızı ringa kullanıyor.
Ben bu çalıştı:
$RedirectUtils_stub = $this->getMockForAbstractClass('RedirectUtils');
$o1 = new stdClass();
$o1->id = 2;
$o1->test_id = 2;
$o1->weight = 60;
$o1->data = "http://www.google.com/?ffdfd=fdfdfdfd?route=1";
$RedirectUtils_stub->expects($this->any())
->method('chooseRandomRoot')
->will($this->returnValue($o1));
$RedirectUtils_stub->expects($this->any())
->method('decodeQueryString')
->will($this->returnValue(array()));
setUp () işlevi, ancak bu taslakları göz ardı edilir ve ben bunu yapıyorum yanlış bir şey, ya da ben AnotherClass
yöntemleri erişen ediyorum yolu olup olmadığını çalışamaz.
Yardım! Bu beni deli ediyor.