PHPunit测试配置文件阅读器

时间:2015-06-08 13:27:50

标签: php 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....
    }
}

我应该如何对此进行单元测试?我应该模拟配置文件吗?我假设不是因为如果我在真正的配置文件中更改某些内容,测试就不会捡起它......如果我应该嘲笑它应该如何测试配置文件?

1 个答案:

答案 0 :(得分:2)

处理文件系统很棘手。有几种方法可以测试它。

有一个测试配置文件,您将在测试中使用包含示例值的测试配置文件。我不确定你究竟要对这些价值做些什么。这可能需要模拟其他系统值。这样做的缺点是你要维护一个文件进行测试,并且必须确保文件的路径/权限能够运行测试。您最终可能会因为文件不可读而不是实际问题而失败。

首选方法是模拟文件系统。 PHPUnit's documentation建议使用vfsStream。这将允许您动态地在测试中创建配置文件并尝试加载它。这样做的好处是您不必维护用于加载文件的单独文件系统/路径。

如果没有更好地了解您的类方法想要实现的目标,我无法提供更多细节。但这应该让你在正确的开始。