使用参数

时间:2017-11-05 22:19:31

标签: ruby-on-rails json ruby rspec actiondispatch

我正在尝试编写用于测试上传功能的规范,并且代码实现按预期工作,但是当我尝试编写规范时,我无法弄清楚数据会话在{{1}期间失败的原因}}。 [Rails 5.X]

方法

JSON.parse

规格:

def upload
  #some validation
  begin
    puts params[:file]
    json = JSON.parse(params[:file].read)
    #rest of the validation
  rescue StandardError, JSON::ParserError, HttpServices::BadHttpResponseError
      flash[:style] = :error
  end
end

方法describe "upload" do before do read = file_fixture("empy_details.json").read @file = Hash.new @file['emp'] = read #debugger > @file:{emp: [{"name":"Bob","key":"201","active":true}]} end it 'should upload' do post :upload, params: { :file => @file }, as: :json expect(flash[:style]).to eq(:success) end end 打印

puts params[:file]

{"emp"=>"[{\"name\":\"Bob\",\"key\":\"201\",\"active\":true}]\n"} JSON.parse方式失败 失败前convert_hashes_to_parameters(key, value)获得converted的值。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

当文件通过Rspec传递时,

params[:file].read抛出异常而我更改了控制器方法代码以适应params[:file]

def upload
  #some validation
  begin
    puts params[:file]
    if params[:file].respond_to?(:read)
      json = JSON.parse(params[:file].read)
    else
      json = JSON.parse(params[:file])
    end
    #rest of the validation
  rescue StandardError, JSON::ParserError, HttpServices::BadHttpResponseError
      flash[:style] = :error
  end
end