2011-02-02 103 views
4

我有一个简单的FileCreator Ruby类,它有一个方法create,它在我的桌面上创建一个空白的txt文件。使用RSpec,我将如何测试此创建方法以确保文件已创建,而不必创建文件 ?我会用RSpec::Mocks吗?有人可以请指出我在正确的目录?谢谢! enter image description here如何使用RSpec测试文件创建?

回答

7

致电file_creator.create(100)之后,您可以在文件夹中搜索所有File*.txt文件并确保计数匹配。 (确保完成后让你的规格删除测试文件)。

Dir.glob(File.join(File.expand_path("~/Desktop"), "File*.txt")).length.should == 100 

使用嘲笑:你可以做这样的事情,以验证File.open方法实际上是被称为(以测试该文件实际上生成,虽然,你可能要考虑实际创建的文件,如第一我的答案的一半)。

File.should_receive(:open).exactly(100).times 
+0

这就是我想我会做到这一点。我想知道的是,如果有一种方法来使用模拟对象或什么东西,所以我不会在第一个地方创建文件? – agentbanks217 2011-02-02 02:25:11

2

你也可以尝试使用类似FakeFS的东西,它嘲笑实际的文件系统。

0

做到这一点最简单的方法是如下:

FileCreator.count.should eq 100