代码之家  ›  专栏  ›  技术社区  ›  tom

phpunit:使用依赖项测试工厂类

  •  1
  • tom  · 技术社区  · 14 年前

    我有下面的工厂类,它有一个依赖项$client。我将依赖项移动到工厂类,因为它第一次出现在service_service1类中,所以我可以测试该服务类。但是我怎样才能测试工厂的课程呢?

    class Factory implements Service
    {
    
        public static function factory($service)
        {
            $config = Zend_Registry::get('config');
    
            switch ($service) {
                case Service::Service1:
                    $client = new Zend_Soap_Client(
                        $config->url,
                        array(
                            'encoding' => 'UTF-8'
                        )
                    );
                    $pickupPoint = new Service_Service1($client);
                    break;
            }
        }
    }
    
    1 回复  |  直到 7 年前
        1
  •  4
  •   Community Ian Goodfellow    7 年前

    我不确定问题是什么,但是如果问题是如何消除硬编码的依赖关系,请看phpunit的作者撰写的这篇文章:

    最好是注入这些类的实例,而不是对它们进行硬编码。作为一种选择,您可以在工厂中使它们的类名属性成为属性,这样您就可以交换它将要实例化的内容。