我有一个读取配置文件(数组)的类。
这是一个基本的例子:
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....
}
}
我应该如何对此进行单元测试?我应该模拟配置文件吗?我假设不是因为如果我在真正的配置文件中更改某些内容,测试就不会捡起它......如果我应该嘲笑它应该如何测试配置文件?
答案 0 :(得分:2)
处理文件系统很棘手。有几种方法可以测试它。
有一个测试配置文件,您将在测试中使用包含示例值的测试配置文件。我不确定你究竟要对这些价值做些什么。这可能需要模拟其他系统值。这样做的缺点是你要维护一个文件进行测试,并且必须确保文件的路径/权限能够运行测试。您最终可能会因为文件不可读而不是实际问题而失败。
首选方法是模拟文件系统。 PHPUnit's documentation建议使用vfsStream。这将允许您动态地在测试中创建配置文件并尝试加载它。这样做的好处是您不必维护用于加载文件的单独文件系统/路径。
如果没有更好地了解您的类方法想要实现的目标,我无法提供更多细节。但这应该让你在正确的开始。