Php 在公共方法只是getter的情况下,如何将类重构为测试单元友好的类?
在公共方法只是getter的情况下,如何将类重构为测试单元友好的类 如何测试这个类,需要测试哪些方法Php 在公共方法只是getter的情况下,如何将类重构为测试单元友好的类?,php,unit-testing,Php,Unit Testing,在公共方法只是getter的情况下,如何将类重构为测试单元友好的类 如何测试这个类,需要测试哪些方法 class Order { private $em; private $orders; private $foo; function __construct(EntityManager $em) { $this->em = $em; } public function prepareOrder($foo)
class Order
{
private $em;
private $orders;
private $foo;
function __construct(EntityManager $em)
{
$this->em = $em;
}
public function prepareOrder($foo)
{
$this->setFields($foo);
$this->doSomething()
$this->prepareRepository();
}
private function setFields($foo)
{
$this->foo = $foo;
}
private function doSomething()
{
//do something with $this->foo
}
private function prepareRepository()
{
//use $this->foo;
$this->orders = $this->em->getRepository(..)->findBy(..);
}
public function getOrder()
{
return $this->orders;
}
}
让我们从以下内容开始:
Order
应该做什么?它的职责是什么?返回存储库。太好了,然后进行测试。如果我在上面说“操纵输入数据,并返回存储库”,会怎么样?还要测试这种操作方法吗?事实上,这些操作方法是这个类的主要内容。无论如何,使用条令::getRepository()对方法进行单元测试是否有意义?您希望使用测试来帮助您进行更好的设计。您的代码正在处理许多不同的事情。谷歌单一责任原则
然后将你的班级分成两部分。然后,您将知道要测试什么(或者最好先尝试测试它(TDD))。让我们从以下内容开始:Order
应该做什么?它的职责是什么?返回存储库。太好了,然后进行测试。如果我在上面说“操纵输入数据,并返回存储库”,会怎么样?还要测试这种操作方法吗?事实上,这些操作方法是这个类的主要内容。无论如何,使用条令::getRepository()对方法进行单元测试是否有意义?您希望使用测试来帮助您进行更好的设计。您的代码正在处理许多不同的事情。谷歌单一责任原则
然后将你的班级分成两部分。然后您将知道要测试什么(或者最好先测试它(TDD))。