【问题标题】:Passing identically-named params to a Rspec POST request to create an array将同名参数传递给 Rspec POST 请求以创建数组
【发布时间】:2014-01-16 18:42:27
【问题描述】:

我有一个 API 调用,我需要在其中发布一组 ID。我知道,如果我将几个名为 ids[] 的参数传递给我的请求,它们将在控制器的 params 哈希中显示为一个数组:

# POST /api/events
# params:
# ids[] = 1 
# ids[] = 2
# ids[] = 3


# Then in Api::EventsController:

puts params # => { ids: [ "1", "2", "3"] }

但是我该如何测试呢?我不能在我的 RSpec 测试中两次使用相同的参数名称:

post "/api/events", :"ids[]" => 1, :"ids[]" => 2, :"ids[]" => 3

因为真正的意思是:

post "/api/events", {:"ids[]" => 1, :"ids[]" => 2, :"ids[]" => 3}

... 并且哈希不能有两次相同的键,所以第二个参数被简化为 {:"ids[]" => 3}

:"ids[]" => "1,2,3" 这样的东西不起作用,它只会导致ids: ["1,2,3"]

我应该将什么传递给post 方法以在我的控制器的params 哈希中获取一个数组?

【问题讨论】:

    标签: ruby-on-rails ruby testing rspec params


    【解决方案1】:

    *面部护理*

    我不知道为什么我没有发生这种情况,但是您可以将数组作为哈希值之一传递:

    post "/api/events", :ids => [1, 2, 3]
    

    我猜我对 URL 语法的理解有点过于字面意思了。

    希望这个答案能为未来的 Google 员工节省 30 秒。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 1970-01-01
      • 2020-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多