将具有相同名称的params传递给Rspec POST请求以创建数组

GMA*_*GMA 1 ruby testing rspec ruby-on-rails params

我有一个API调用,我需要POST一组ID.我知道如果我通过调用ids[]我的请求的几个参数,它们将params在控制器的哈希中显示为数组:

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


# Then in Api::EventsController:

puts params # => { ids: [ "1", "2", "3"] }
Run Code Online (Sandbox Code Playgroud)

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

post "/api/events", :"ids[]" => 1, :"ids[]" => 2, :"ids[]" => 3
Run Code Online (Sandbox Code Playgroud)

因为这真正意味着:

post "/api/events", {:"ids[]" => 1, :"ids[]" => 2, :"ids[]" => 3}
Run Code Online (Sandbox Code Playgroud)

...和哈希不能有两次相同的键,所以第二个参数减少到只{:"ids[]" => 3}.

类似的东西:"ids[]" => "1,2,3"不起作用,它只是导致ids: ["1,2,3"].

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

GMA*_*GMA 7

*Facepalm*

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

post "/api/events", :ids => [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

我猜我的URL语法有点过于字面意思.

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