2015-06-08 102 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