estoy usando este bloque de código para imitar la forma de cargar los archivos:RSpec convertir los parámetros POST a cadena? (Archivo de la prueba de subida)
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
En la prueba rspec se POST'd al controlador:
post :create, :legal_register_id => "1", :register => {"file" => mock_file}
Pero se rompe esta línea en el controlador real:
CSV.parse(params[:register][:file].read.force_encoding('UTF-8'))
Debido params [: Registrar] [: archivo] está siendo interpretted como una cadena en lugar de un objeto ActionDispatch:
undefined method `read' for "#<ActionDispatch::Http::UploadedFile:0x00000108de3da8>":String
¿Es este comportamiento estándar para rspec? ¿Hay alguna manera de pasar objetos a través de params?
entonces ... ¿lo conseguiste trabajando? ¿Me ayudó mi respuesta? –