有没有一种方法或模块可以让我模拟用于 Perl 单元测试的假文件系统?
我用各种Test::*
和 Test::Mock*
单元测试中的模块,但偶尔我希望能够伪造文件系统。一个简单的例子(和最低要求)是伪造 -r
的结果。或 -f
文件测试运算符,这样当我调用执行文件测试的对象或模块时,我可以更轻松地控制结果。
我知道有很多方法可以解决这个问题,例如创建临时文件或将文件测试包装在它们自己的函数中,然后可以对其进行模拟,但有时如果我能让 Perl 对我撒谎就好了...因此不需要建议重写正在测试的代码的解决方案;-)
更新:
刚刚找到并阅读后this SO question ,重写代码以使其更具可测试性看起来是更明智的选择。尽管如此,手指交叉...
最佳答案
这些值得一看:Filesys::Virtual和
Filesys::Virtual::Async .我用过第一个。与 Path::Class 混合和 File::Temp简洁优雅地完成各种自清洁工作是很容易的。 Test::Virtual::Filesystem看起来也很有趣。
关于perl - 用于 Perl 单元测试的模拟文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6679266/