我有以下在我的控制器规范上传文件:
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 "x89PNGrn":字符串
我最近也遇到了fixture_file_upload
的麻烦,但好消息是该方法只是大致如下代码的快捷方式:
Rack::Test::UploadedFile.new("#{Rails.root}/spec/fixtures/#{file_path}", mime_type)
所以尝试使用这个低级调用,如果对你来说效果更好,你甚至可以把它包装在一个helper方法中:
def file_upload(name)
Rack::Test::UploadedFile.new("#{Rails.root}/spec/_files/#{name}")
end
(注意路径/spec/fixtures
没有什么特别之处,这只是假定的默认值。)