如何使用 Rspec 存根 File 对象

ste*_*och 2 rspec ruby-on-rails stub

我的规范中有以下内容:

before do 
  @item = Item.new( title: "Lorem ipsum", 
    image: File.new(Rails.root.join('app', 'assets', 'images', 'rails.png')))
end
Run Code Online (Sandbox Code Playgroud)

相关规范需要大约 30 秒才能运行,但当我image: File.new()从哈希中删除时,我的测试运行时间不到 1 秒!

因此,File.new()向我的规格添加负载也是如此,如果可能的话,我想将其存根,但是当我尝试这样做时:

image: File.stub(Rails.root.join('app', 'assets', 'images', 'rails.png'))) 
Run Code Online (Sandbox Code Playgroud)

我在测试输出中看到以下错误:

 Failure/Error: image: File.stub(Rails.root.join('app', 'assets', 'images', 'rails.png'))) }
 NoMethodError:
   undefined method `to_sym' for #<Pathname:0xae767d8>
Run Code Online (Sandbox Code Playgroud)

如果有任何建议,我将不胜感激。FWIW,图像上传是由回形针处理的。

use*_*055 5

我会做这样的事情:

@item = Item.new( title: "Lorem ipsum")
file = double('file', :size => 0.5.megabytes, :content_type => 'png', :original_filename => 'rails')
@item.stub(image).and_return(file)
Run Code Online (Sandbox Code Playgroud)