2015-06-08 175 views
0

我有一個讀取配置文件(數組)的類。PHPunit測試配置文件讀取器

這裏有一個基本的例子:

class ConfigReader 
{ 
    function __construct($configFileName) 
    { 
     $this->config = $this->load($configFileName); 
    } 

    private function load() 
    { 
     //load config file 
    } 

    public function hasValue($value) 
    { 
     //parse config for value return true 
    } 

    public function getValue($key) 
    { 
     //etc.... 
    } 
} 

我應該怎樣我應該單元測試呢?我應該嘲笑配置文件嗎?我假設不是因爲如果我改變了真正的配置文件中的某些東西,測試不會撿起它......如果我應該嘲笑它,我應該如何測試配置文件?

回答

2

處理文件系統非常棘手。有幾種方法可以對此進行測試。

有一個測試配置文件,您可以在包含示例值的測試中使用它。我不確定你將如何處理這些值。這可能需要嘲笑其他系統值。不利的一面是你正在維護一個文件進行測試,並且必須確保文件的路徑/權限是可以運行的。您最終可能會因爲文件不可讀而不是實際問題而導致測試失敗。

首選的方法是模擬文件系統。 PHPUnit's documentation建議使用vfsStream。這將允許您在測試中即時創建配置文件並嘗試加載它。這樣做的好處是,您不必爲加載文件而維護單獨的文件系統/路徑。

我無法提供更多的細節,而無法更好地瞭解您的類方法試圖完成什麼。但是這應該讓你在正確的開始。

+0

該類僅從配置返回鍵值數據。你已經把我放在正確的軌道上,我會看看vfsstream – user3886650