gpt4 book ai didi

ruby-on-rails - RSpec将POST参数转换为字符串? (测试文件 uploader )

转载 作者:行者123 更新时间:2023-12-04 07:33:39 25 4
gpt4 key购买 nike

我正在使用这段代码来模仿文件上传的方式:

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 到 Controller :
post :create, :legal_register_id => "1", :register => {"file" => mock_file}

但它在实际 Controller 中打破了这一行:
CSV.parse(params[:register][:file].read.force_encoding('UTF-8'))

因为 params[:register][:file] 被解释为字符串而不是 actiondispatch 对象:
undefined method `read' for "#<ActionDispatch::Http::UploadedFile:0x00000108de3da8>":String

这是 rspec 的标准行为吗?有没有办法通过参数传递对象?

最佳答案

将参数对象转换为字符串的不是 RSpec,而是 Rails 3.1。

您可以使用 fixture_file_upload 绕过它如 this answer 中所述.

关于ruby-on-rails - RSpec将POST参数转换为字符串? (测试文件 uploader ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7957823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com