2014-01-08 54 views
0

现在,我使用IoC容器和DI处理所有项目,我想了解当我使用静态工厂时我应该如何测试我的代码(当时我没有做过任何单元测试) 。假设我有以下代码片段。如何测试使用静态工厂的方法?

class TestFactory { 

    public static function create($something) { 
     switch($something) { 
      case 1: 
       return Dummy; 
       break; 
     } 
    } 

} 

class Client { 

    public function __construct() { 

     $this->aClass = TestFactory::create(1); 

    } 

} 

如果我想单元测试客户类,我怎么做,没有使用DI和IoC容器?

回答

1

2种方式:

  1. 确保您TestFactory中运行良好与测试框架,只是测试客户端与TestFactory中运行。 (推荐)

  2. 继承Client类并且如果您必须将客户端作为单独的测试用例分开,__construct()将返回一个虚拟对象。