我决定用BDD工作流编写简单的MVC。我想实现设置类的一些属性的方法。东西与文件路径连接。在这个方法中,我想检查路径是否正确以及该文件是否存在。最终产品应如下所示:
<?php
class SomeClass
{
public function setProperty($property_value)
{
if (!file_exists($property_value)) {
throw new CustomFileNotFoundException();
}
$this->someProperty = $property_value;
}
}
我应该如何在PhpSpec中实现测试方法(示例)?我不想在规范测试中创建“虚拟”文件,我确定有一些模拟/ stab方法,但我不知道如何处理这个...我只想检查这个属性是否是被设定 我应该为文件系统创建单独的中间层然后模拟它吗?谢谢你的帮助!
答案 0 :(得分:3)
我可以在这里看到三个选项。前两个你已经想出了自己;)
您可以创建和删除“虚拟”文件,也可以为文件系统操作注入一个协作者模拟器(请查看Symfony的Filesystem component)。
第三个选项是为虚拟文件系统使用流包装器,如vfsStream。这里有一个很好的解释:https://github.com/mikey179/vfsStream/wiki/Example