RSpec请求测试在POST JSON参数中合并数组中的哈希值

时间:2013-08-20 14:27:02

标签: ruby-on-rails json rspec request params

看起来像RSpec中的一个错误,但也许我错过了一些东西。

我有一个请求规范,其中我发布了一个包含哈希数组的JSON:

规格/请求/ dummy_request_spec.rb:

post "http://my.server.com/some/route", {
  format: :json,
  data: [
    {
      details: {
        param1: 1
      },
    },
    {
      details: {
        param2: 1
      }
    }
  ]
}

由于一些奇怪的原因,RSpec将哈希合并为一个元素,然后将它们发送到服务器。 打印出控制器中收到的参数:

data: [
  {
    details: {
      param1: 1,
      param2: 2
    },
  },
]

版本: rspec的-2.13.0 导轨-3.2.10

很奇怪!!

由于

3 个答案:

答案 0 :(得分:20)

知道了!表单数据不支持哈希数组 RSpec默认将其作为表单数据发布。解决方案:

post '...', {...}.to_json, {'CONTENT_TYPE' => "application/json", 'ACCEPT' => 'application/json'}

答案 1 :(得分:0)

另外,请注意您有一个额外的逗号:

data: [
  {
   details: {
    param1: 1
   }**,**
  },
  {
   details: {
    param2: 1
   }
  }
 ]

答案 2 :(得分:0)

你的回答帮我回答了自己的帖子:

Rails JSON API testing POST request with PARAMS in JSON

你应该接受它是正确的:)感谢你的帮助