我在控制器规范中有以下内容:
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
请告诉我我应该发布的其他相关信息。
答案 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
并没有什么特别之处,这只是假设的默认值。)