RSpec преобразует параметры POST в строку? (тестирование загрузчика файлов)

Я использую этот блок кода, чтобы имитировать способ загрузки файлов:

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:

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

Это стандартное поведение для rspec? Есть ли способ передавать объекты через параметры?

6
задан dMix 31 October 2011 в 18:11
поделиться