Aradım ama aradığım şeyi tam olarak bulamıyorum ve bu konuda çok fazla yardım bulamıyorum. Ben ünite testine oldukça yeniyim, bu yüzden doğru yolda olduğumdan emin değilim. Her neyse, soru üzerine.PHP biriminde sahte Nesneler oluşturma
<?php
class testClass {
public function doSomething($array_of_stuff) {
return AnotherClass::returnRandomElement($array_of_stuff);
}
}
?>
Şimdi, açıkça ben aynı şeyi her zaman dönmek için AnotherClass::returnRandomElement($array_of_stuff);
istiyorum: Bir sınıf var. Benim sorum, birim testimde bu nesneyi nasıl ele alabilirim?
Test dosyasının en üstüne AnotherClass
eklemeyi denedim, ancak AnotherClass
'u test etmek istediğimde "Sınıfı yeniden tanımlayamıyor" hatası alıyorum.
Sanırım fabrika sınıflarını anlıyorum, ancak bunu bu örnekte nasıl uygulayacağımı bilmiyorum. Test verilerini içeren tamamen ayrı bir AnotherClass sınıfı yazmam gerekecek ve daha sonra bunu gerçek bir AnotherClass yerine yüklemek için Factory sınıfını kullanmalı mıyım? Ya da Fabrika modelini sadece kırmızı bir ringa balığı kullanıyor. Kurulum() fonksiyonunda
$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()));
, ancak bu koçanları dikkate alınmaz ve bunu yapıyorum yanlış bir şey, ya bir yol Ben giriyorum olmadığını çalışamaz:
Bu çalıştıAnotherClass
yöntemleri.
Yardım! Bu beni deli ediyor.
Parlak, yanıt için teşekkürler. Bir soru olsa da; Bu yüzden benim için tüm örnekleri oluşturan bir Factory sınıfım var. Bu, üretime giren sınıftır. Sahte nesne nesnelerini bu sınıfa ekledim mi yoksa ana fabrika sınıfını üretim olarak mı bırakıyorum, daha sonra da isimler için yeni bir fabrika sınıfı mı ekledim? – Mike
Bu size göre. Test için yeni bir fabrika sınıfı yapabilir veya test ettikten sonra Factory sınıfınızı temizlediğinizden emin olabilirsiniz. –