(klasa jest bez sensu bo ją przeredagowałem by nie skupiać się na zagnieżdżonych elsach itp, a skupić się na strukturze klasy, że jedna metoda wywołuje 3 inne, i że te metody nic nie zwracają tylko przypisują wartość właściwościom klasy))
class Order { private $em; private $orders; private $tableDetails; private $forms; function __construct(EntityManager $em) { $this->em = $em; } public function prepareOrder($tableDetails, $tmpForms) { $this->setFields($tableDetails, $tmpForms); $this->setFalse(); $this->setFilter(); $this->prepareRepository(); } { $this->tableDetails = $fields; $this->forms = $forms; } private function setFalse() { if ($this->isAnyFormValid()){ $this->tableDetails['filterField'] = false; } } private function setFilter() { if(!($this->tableDetails['filter'])) { $this->prepareFilterValue(); } } private function prepareFilterValue(){ if(!($this->tableDetails['filterField'])){ $this->tableDetails['filter'] = 'all';} } private function isAnyFormValid() { if(($this->forms['StatusForm']->isValid()) { return 1; } } private function prepareRepository() { if($this->tableDetails['filter'] == 'all'){ $this->orderRepositoryMaker(); } private function orderRepositoryMaker() { $this->orders = $this->em->getRepository('AppBundle:Zamowienie') ->findAll(..) if (!$this->orders) {throw new \Exception('Nie można znaleźć zamówień');} } public function getTableDetails() { return $this->tableDetails; } public function getOrder() { return $this->orders; } }
także mam 3 metody publiczne:
- prepareOrder
- getTableDetails
- getOrder
jak mam np testować metodę prepareOrder() która nic nie zwraca, wywołuje kilka metod prywatnych, które przypisują wartości właściwościom klasy? Albo jak zmodyfikowac klasę by była test-friendly?