PHPUnit:测试具有依赖项的工厂类

时间:2010-09-15 14:58:02

标签: php unit-testing phpunit

我有以下工厂类,它有一个依赖$ 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 个答案:

答案 0 :(得分:4)

我不确定问题是什么,但是如果它是如何存根硬编码的依赖项,请看PHPUnit的作者的这篇文章:

最好的方法是注入这些类的实例而不是硬编码。作为替代方案,您可以在Factory中创建其类名属性,以便您可以交换实例化的内容。