2014-01-08 76 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()將返回一個虛擬對象。