是否有方法或模块允许我模拟伪文件系统以用于Perl单元测试?
我在单元测试中使用了各种Test::*
和Test::Mock*
模块,但有时候我希望能够伪造文件系统。一个简单的例子(和最低要求)将伪造-r
或-f
文件测试操作符的结果,这样当我调用执行文件测试的对象或模块时,我可以更容易地控制结果
我知道有各种方法可以解决这个问题,例如创建临时文件或在自己的函数中包装文件测试然后可以进行模拟,但有时如果我可以将Perl转换为骗我...所以建议重写被测试代码的解决方案不是必需的; - )
更新
刚刚找到并阅读this SO question之后,重写代码以使其更易于测试,看起来就像是更明智的选择。不过,手指交叉......
答案 0 :(得分:6)
这些值得一看:Filesys::Virtual和 Filesys::Virtual::Async。我用过第一个。与Path::Class和File::Temp混合在一起,可以轻松优雅地完成各种自动清洁工作。 Test::Virtual::Filesystem看起来也很有趣。