Я использую этот блок кода для имитации способа загрузки файлов:
def mock_file
file = File.new((Rails.root + "public/checklist_items_template.csv"),"r")
image = ActionDispatch::Http::UploadedFile.new(
:filename => "checklist_items_template.csv",
:type => "text/csv",
:head => "Content-Disposition: form-data;
name=\"checklist_items_template.csv\";
filename=\"checklist_items_template.csv\"
Content-Type: text/csv\r\n",
:tempfile => file)
return image
end
В тесте rspec POST'd для контроллера:
post :create, :legal_register_id => "1", :register => {"file" => mock_file}
Ноон разрывает эту строку в фактическом контроллере:
CSV.parse(params[:register][:file].read.force_encoding('UTF-8'))
Поскольку params [: register] [: file] интерпретируется как строка вместо объекта actiondispatch:
undefined method `read' for "#<ActionDispatch::Http::UploadedFile:0x00000108de3da8>":String
Isэто стандартное поведение для rspec?Есть ли способ передавать объекты через параметры?