2011-06-23 80 views
2

我正在研究簡單的基準「框架」(理由:無聊和實踐)。 現在我正試圖讓自己的頭靠近一些東西。 首先第一件事情:幫助設計和(更重要的)單元測試。 (類似於戰略模式)

class DataManager { 

    private $persistanceStrategy; 

    public function __construct(IPersistence $persistenceStrategy) { 
     $this->persistanceStrategy = $persistenceStrategy; 
    } 

    public function saveData() { 
     $this->persistanceStrategy->saveData($params); 
    } 

    public function getData() { 
     $this->persistanceStrategy->getData($params); 
    } 
} 

interface IPersistence { 
    public function saveData(array $params); 
    public function getData(array $params); 
} 

class XMLPersistence implements IPersistence { 

    // Params would contain something like path to the 
    // xml file, and unique name of some tag 
    public function saveData(array $params) { 
     // write something to xml file 
    } 
    public function getData(array $params) { 
     // get something from xml file 
    } 
} 

class DBPersistence implements IPersistence { 
// $params would contain unique name of data that is needed 
// and data for db connection 
    ... 
} 

class SessionPersistence implements IPersistence { 
    .... 
} 

問題:

  1. 有沒有設計這部分代碼的一種更好的方式。

  2. 某人如何測試DataManager類和「戰略」類?

回答

3
  1. 這裏使用戰略前導模式對我來說很有意義,所以我沒有任何改進的建議。

  2. 這裏有一種方法來測試你的DataManager類的博客。基本上,你給它一個模擬戰略課程,並確保確實調用了適當的戰略方法。

    Testing Your Mocks

    我想測試持久化類會直截了當,確保XMLPersistence使得預期的XML數據,DB放入預期數據庫中的數據,也許Session是斷言針對預期的序列化。

+0

謝謝。你幫了我很多:) –

+1

不客氣!自從該博客幾周前在[Planet PHPUnit](http://planet.phpunit.de/)上出現後,它就很熟悉了。 –