在JSON Post for RSpec中发送原始数据时,Params丢失错误

时间:2015-11-26 11:14:14

标签: ruby-on-rails json rspec

我正在尝试将JSON post请求中的一些原始数据发送到我的RSpec控制器测试。我已经使用实际的Postman请求成功测试了控制器,但我无法让Rspec测试工作

我得到的错误是

param is missing or the value is empty: annotations

这是我的测试设置,当我通过Postman运行请求时,我已经从rails服务器日志中逐字复制了

params = '{annotations"=>[{"id"=>1, "location_start"=>1, "location_end"=>3, "source_text"=>"what", "reading"=>"cool"}, {"id"=>2, "location_start"=>1, "location_end"=>-1, "reading"=>"cool"}]}'
patch :update, params, format: :json

我也试过

params = {:annotations => [{ :id=>1, :location_start=>1, :location_end=>3}]}
patch :update, params.to_json

1 个答案:

答案 0 :(得分:1)

https://www.relishapp.com/rspec/rspec-rails/docs/controller-specs/controller-spec#setting-a-different-content-type-for-example-json-(request-type)

在这个例子中查看json体的定义方式:它是一个ruby哈希!所以你不需要尝试传入一个原始字符串,而是一个Hash然后自动转换为JSON。

希望能帮到你