17

我正在编写一个执行一些外部命令行实用程序的 ruby​​ 程序。如何从我的 rspec 测试中模拟文件系统,以便我可以轻松设置一些文件层次结构并在测试后对其进行验证。最好在 ram 中实现,以便快速运行测试。

我意识到我可能找不到可移植的解决方案,因为我的外部实用程序是直接与操作系统文件服务交互的本机程序。Linux 是我的主要平台和解决方案就足够了。

4

3 回答 3

40

你检查过 FakeFSMockFS吗?

注意:到 MockFS 的原始链接不起作用。看起来它不再被维护了。

于 2009-12-01T14:48:30.547 回答
8

也许这不会直接回答您的问题,但在这种情况下,我倾向于在测试设置期间创建一个临时目录并在拆卸时将其删除。当然,您还必须确保应用程序写入此临时目录。我总是有一个配置选项来定义我可以在测试期间覆盖的目标目录。

当涉及到断言时,我使用普通的File.exist?or File.directory?,但当然你可以围绕它创建自己的包装器。如果您需要一些初始状态,您可以构建一个可用作夹具的目录,并将在测试设置期间复制到临时目录。

于 2008-11-13T10:52:25.160 回答
6

您可以创建一个大文件(虚拟磁盘的大小)并将该文件挂载为回送设备。您可以在此设备上创建任何文件系统和目录结构。
您可以创建其中 2 个并进行简单的差异比较,以确保测试后的数据完整性。
我希望我能正确理解您的要求,因为我不确定为什么简单的 ramdisk 解决方案不够好。
也可能是相关的。

于 2008-11-13T19:24:03.720 回答