mar*_*cgg 7 ruby testing rspec ruby-on-rails mocking
这就是我所拥有的:
it "should be able to get a valid directory path" do
@asset.some_file_path.should == "/something/test.jpg"
end
Run Code Online (Sandbox Code Playgroud)
问题是如果没有现有文件,some_file_path将返回"/not_here_yet.jpg".
def some_file_path
if File.exists(self.my_image_path)
return my_image_path
else
return "/not_here_yet.jpg
end
end
Run Code Online (Sandbox Code Playgroud)
我真的不想在我的测试中创建一个新文件.有没有办法让我伪造文件的存在?
我正在考虑以下几点:
it "should be able to get a valid directory path" do
AwesomeFakeFileCreator.create(@asset.my_image_path)
@asset.some_file_path.should == "/something/test.jpg"
end
Run Code Online (Sandbox Code Playgroud)
这可能吗?我该怎么办?
编辑:我看了一下FakeFS,但我不确定它是否回答了我的问题
你可以做点什么
it "should be able to get a valid directory path" do
File.stub!(:exists?).and_return(true)
@asset.stub!(:my_image_path).and_return("/something/test.jpg")
@asset.some_file_path.should == "/something/test.jpg"
end
Run Code Online (Sandbox Code Playgroud)