Szukałem, ale nie mogę znaleźć dość co szukam i instrukcja nie jest zbyt pomocne w tym względzie. Jestem całkiem nowy w testowaniu jednostkowym, więc nie jestem pewien, czy jestem na dobrej drodze. W każdym razie, na pytanie. Mam klasy:Tworzenie atrapa obiektu w jednostce PHP
<?php
class testClass {
public function doSomething($array_of_stuff) {
return AnotherClass::returnRandomElement($array_of_stuff);
}
}
?>
Teraz wyraźnie chcę AnotherClass::returnRandomElement($array_of_stuff);
powrót to samo za każdym razem. W moim teście jednostkowym mam pytanie, jak mam to zrobić w makiecie?
Próbowałem dodanie AnotherClass
do początku pliku testowego, ale gdy chcę przetestować AnotherClass
otrzymuję „nie można redeclare klasę” błąd.
Chyba rozumiem klas fabrycznych, ale nie jestem pewien, w jaki sposób mogę ubiegać się, że w tym przypadku. Czy musiałbym napisać całkowicie oddzielną klasę AnotherClass, która zawierałaby dane testowe, a następnie użyć klasy Factory, aby załadować ją zamiast prawdziwej kolejki? Lub używa wzoru Factory tylko czerwonego śledzia.
Próbowałem to:
$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()));
w funkcji setup(), ale te odcinki są ignorowane i nie mogę pracować, czy to coś robię źle, czy droga mam dostępu metody AnotherClass
.
Pomoc! To doprowadza mnie do szału.
Brilliant, dzięki za odpowiedzi. Jedno pytanie jednak; więc mam swoją klasę Factory, która tworzy dla mnie wszystkie instancje. To jest klasa, która wchodzi do produkcji. Czy dodaję obiekty symulowane do tej klasy, czy po prostu opuszczam główną klasę fabryczną jako produkcję, a następnie dodaję nową klasę fabryczną do unittests? – Mike
Thats realyl do Ciebie. Możesz wykonać nową klasę fabryczną do testowania lub możesz upewnić się, że wyczyściłeś swoją klasę Factory po przetestowaniu go. –