Tôi đang sử dụng khối mã này để bắt chước cách thức tập tin được tải lên:RSpec chuyển đổi các tham số POST thành chuỗi? (Kiểm tra tập tin tải lên)
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
Trong thử nghiệm rspec nó được POST'd với bộ điều khiển:
post :create, :legal_register_id => "1", :register => {"file" => mock_file}
Nhưng nó phá vỡ dòng này trong bộ điều khiển thực tế:
CSV.parse(params[:register][:file].read.force_encoding('UTF-8'))
Vì params [: register] [: file] được hiểu là chuỗi thay vì đối tượng actiondispatch:
undefined method `read' for "#<ActionDispatch::Http::UploadedFile:0x00000108de3da8>":String
Hành vi chuẩn này có dành cho rspec không? Có cách nào để vượt qua các đối tượng thông qua params?
vì vậy ... bạn có làm cho nó hoạt động không? Câu trả lời của tôi có giúp ích không? –