Ruby on rails 未定义的方法'tempfile';至于\x89PNG\r\n“文件”一串
我的控制器规范中有以下文件用于上载文件:Ruby on rails 未定义的方法'tempfile';至于\x89PNG\r\n“文件”一串,ruby-on-rails,rspec,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") 我认为这是上传文件的正确方式,但它一直让我: NoMethodE
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:“\x89PNG\r\n”的未定义方法“tempfile”:字符串
请告诉我应该发布哪些其他相关信息。我最近也遇到了
fixture\u file\u 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
,没有什么特别之处,这只是假定的默认值。)抱歉@Topher我已经尝试过Rack::Test::UploadedFile.new(File.expand_path(“spec/factories/files/happypanda.png”),“image/png”)
它给了我同样的错误。