测试文件/文件夹导航和操作

时间:2012-10-28 02:23:00

标签: ruby rspec

我正在开发一个模块,它提供了导航目录和操作文件的方法。基本上它将是DirFile类的组合,其中的选项特定于我正在处理的项目的需求。

现在我已开始为其中一些方法编写测试,事情变得越来越混乱。

实施例

我拥有的一种方法是tree函数,它返回文件和文件夹的哈希值,您可以在其中传递tree(only: 'folders', limit: 3)等选项。为了测试它只降低了3个级别,我必须有4个以上带有虚拟文件的子文件夹。

问题

现在我正在对项目外的文件夹进行测试,因为子文件夹已经存在,但我想摆脱这一点,特别是考虑到一旦我开始测试等效于{{的方法的测试对系统文件的不可靠性1}}(以及缺乏可移植性)。

我开始认为我需要创建一个实验室老鼠"我做的所有类型文件夹"实验"在,但我不知道如何创建它。

  • 我是否创建了一个创建文件的函数?
  • 我是否从其他位置提取文件和文件夹?
  • 我是否使用某种" lorem ipsum"用于文件结构的生成器?
  • 我是否手动制作所有这些文件和文件夹(呃)?
  • 我是否只是嘲笑并将所有内容存根,而不是实际创建/删除文件和文件夹?(我不会发现这种情况)

因此...

有人通常会如何测试过多的文件和文件夹操作?

1 个答案:

答案 0 :(得分:1)

我认为你不想使用模拟/存根。您的操作系统的文件系统应该经过充分测试并且速度很快,因此模拟/存根的好处很小。创建模拟/存根系统会增加复杂性而没有太多好处。

这是我的答案:

我是否创建了一个创建文件的功能?
是。您可以为这些函数创建测试以确保它们是正确的。而不是调用DirFile,编写帮助函数,使代码简单易读。也许你可以在源/测试代码之间共享辅助函数......

我是否从其他位置提取文件和文件夹?
不知道这是为了什么......

我是否使用某种“lorem ipsum”生成器来处理文件结构?
是的,如果你的意思是创建生成文件结构的函数。

我是否手动制作所有这些文件和文件夹(呃)?
否。

我是否只是嘲笑并将所有内容存根,而不是实际创建/删除文件和文件夹?(我看不到这种情况发生)
没有。创建文件/目录的一个好处是,您可以手动检查发生了什么,而不是100%依赖于测试。这实际上是一个很好的方法,因为没有它可能会出现一个错误,源代码和测试代码都没有达到您的预期,但您不会知道,因为 似乎 要工作。