我正在编写一个执行一些外部命令行实用程序的ruby程序。我如何从我的rspec测试模拟文件系统,以便我可以轻松设置一些文件层次结构并在测试后验证它。最好在ram中实现,以便测试能够快速运行。
我意识到我可能找不到便携式解决方案,因为我的外部实用程序是直接与操作系统文件服务交互的本机程序。 Linux是我的主要平台,解决方案就足够了。
答案 0 :(得分:38)
您是否签出了FakeFS或 MockFS ?
注意:MockFS的原始链接不起作用。 looks like它不再被维护。
答案 1 :(得分:8)
也许这不会直接回答你的问题,但在这种情况下,我倾向于在测试设置期间创建一个临时目录,并在拆卸时将其删除。当然,您还必须确保应用程序写入此临时目录。我总是有一个配置选项来定义我可以在测试期间覆盖的目标目录。
当谈到断言时,我使用普通File.exist?
或File.directory?
,但当然你可以围绕它创建自己的包装器。如果您需要一些初始状态,您可以构建一个可用作夹具的目录,并在测试设置期间将其复制到临时状态。
答案 2 :(得分:6)
您可以创建一个大文件(虚拟磁盘的大小)并将文件装载为loop-back device。您可以在此设备上创建任何文件系统和目录结构 您可以创建其中的两个并进行简单的差异比较,以确保测试后的数据完整性 我希望我能正确理解你的要求,因为我不确定为什么简单的ramdisk解决方案不够好 This也可能相关。