PHPunit测试配置文件读取器


PHPunit test a config file reader

我有一个类读取配置文件(数组)。

下面是一个基本的例子:

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....
    }
}

我应该如何进行单元测试?我应该模拟配置文件吗?我认为不是,因为如果我在实际配置文件中改变了一些东西,测试就不会把它捡起来……如果我应该模拟它,我应该如何测试配置文件?

处理文件系统很棘手。有几种方法可以对此进行测试。

有一个测试配置文件,您将在包含示例值的测试中使用它。我不确定你要怎么处理这些值。这可能需要嘲弄其他系统的价值观。这样做的缺点是,您要维护一个用于测试的文件,并且必须确保文件的路径/权限能够运行测试。您可能会以测试失败告终,因为文件不可读,而不是真正的问题。

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

如果不更好地了解你的类方法试图完成什么,我无法提供更多的细节。但这应该会让你有一个正确的开始。