Php 在公共方法只是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)

在公共方法只是getter的情况下,如何将类重构为测试单元友好的类

如何测试这个类,需要测试哪些方法

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))。