3

我很高兴发现FakeFS能够伪造一个文件系统沙箱,我的测试可以在其中搞乱。现在我希望能够测试测试 FileUtils.chown 和 chmod 操作,因此希望在测试上下文中与假用户一起工作,而不是将我的东西绑定到操作系统用户数据库以进行完全可移植和离散的测试。

我用 rspec 进行测试。

最好的方法是什么?

4

2 回答 2

1

有一个非常简单的方法可以做到这一点:FileUtils::DryRun. 它是一个类似于 的模块FileUtils,但实际上并没有针对这些场景对文件系统做任何事情。

如果你需要它来替换FileUtils,只需运行FileUtils = FileUtils::DryRun

于 2013-02-23T14:41:51.540 回答
1

我不确定我是否得到了这个问题,但我假设您想测试 FileUtils 调用的“真实”结果,即更改文件的权限和所有权,这就是您需要某种用户的原因。我不会那样做,因为“SELECT 没有损坏”: http: //pragmatictips.com/26

相反,假设如下:如果您使用正确的参数调用 FileUtils.chown 和朋友,他们将做正确的事情。要确保您的应用程序将正确的参数传递给 FileUtils,请使用模拟。这是一个例子:https ://gist.github.com/phillipoertel/5020102

如果您不想将您的测试与实现如此紧密地结合起来(模拟知道您的班级内部发生了什么),您可以通过预期它的效果来测试更改的权限。例如:如果之前不允许@user 访问@file,则调用更改权限的方法,然后调用需要更改权限的方法之一并断言有效。但是这种方法将访问文件系统,这是您一开始不想要的。

于 2013-02-23T15:19:00.093 回答