undefined方法`tempfile' for" \ x89PNG \ r \ n":String

时间:2015-05-25 17:12:15

标签: ruby-on-rails rspec

我在控制器规范中有以下内容:

post :file_upload,
   user_id: @project.user.username,
   id: @project.name,
   branch_name: 'master',
   commit: 'first commit',
   file: fixture_file_upload("files/happypanda.png", "image/png")

我认为这是上传文件的正确方法,但它一直在给我:

  

NoMethodError:未定义的方法`tempfile' for" \ x89PNG \ r \ n":String

请告诉我我应该发布的其他相关信息。

1 个答案:

答案 0 :(得分:0)

我最近也遇到了fixture_file_upload的问题,但好消息是该方法只是以下代码的快捷方式:

Rack::Test::UploadedFile.new("#{Rails.root}/spec/fixtures/#{file_path}", mime_type)

所以尝试使用这个较低级别的调用,如果这对你更有效,你甚至可以用一个帮助方法将其包装起来:

def file_upload(name)
  Rack::Test::UploadedFile.new("#{Rails.root}/spec/_files/#{name}")
end

(请注意,路径/spec/fixtures并没有什么特别之处,这只是假设的默认值。)