在PhpSpec中测试内置函数的异常

时间:2013-09-29 19:48:28

标签: testing tdd bdd phpspec

我决定用BDD工作流编写简单的MVC。我想实现设置类的一些属性的方法。东西与文件路径连接。在这个方法中,我想检查路径是否正确以及该文件是否存在。最终产品应如下所示:

<?php
class SomeClass
{
     public function setProperty($property_value)
     {
         if (!file_exists($property_value)) {
             throw new CustomFileNotFoundException();
         }
         $this->someProperty = $property_value;
     }
}

我应该如何在PhpSpec中实现测试方法(示例)?我不想在规范测试中创建“虚拟”文件,我确定有一些模拟/ stab方法,但我不知道如何处理这个...我只想检查这个属性是否是被设定 我应该为文件系统创建单独的中间层然后模拟它吗?谢谢你的帮助!

1 个答案:

答案 0 :(得分:3)

我可以在这里看到三个选项。前两个你已经想出了自己;)

您可以创建和删除“虚拟”文件,也可以为文件系统操作注入一个协作者模拟器(请查看Symfony的Filesystem component)。

第三个选项是为虚拟文件系统使用流包装器,如vfsStream。这里有一个很好的解释:https://github.com/mikey179/vfsStream/wiki/Example