如何使用RSpec的send_file方法测试下载图像?

时间:2016-05-30 16:44:15

标签: ruby-on-rails rspec

我在测试图像下载方面遇到了困难。

def download_img
  @image = Photo.find params[:id] unless params[:id].nil?
  @c = Cat.find params[:cat_id] unless params[:cat_id].nil?
  @foo = @image.foo unless @image.nil?

  send_file(Paperclip.io_adapters.for(@image.file).path, type: "jpeg", :disposition => "attachment", :filename => @image.name)
end

我的RSpec测试(控制器):

describe 'download_img' do
before do
  get :download_img, { id: image.id }
end

it 'retrieves image by id' do
  img = Photo.find image.id
  expect(img).not_to be_nil
end

it 'downloads image' do
  page.response_headers["Content-Type"].should == "application/jpg"
  page.response_headers["Content-Disposition"].should == "attachment; filename=\"image.name.jpg\""
end
end

当我为两个测试运行rspec测试时,我收到一个错误:"没有这样的文件或目录@ rb_sysopen - /home/public/system/photos/files/000/000/001/foo/IMG123.JPG& #34;

谢谢。

1 个答案:

答案 0 :(得分:0)

image中你所指的Photo.find image.id来自灯具吗?请您检查一下夹具中是否有相应的文件。我想你必须改变灯具中的路径并创建该文件,它的一个好地方是spec/fixtures