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

时间:2014-01-16 09:12:21

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

我有一个API调用,我需要POST一组ID。我知道如果我将几个名为ids[]的params传递给我的请求,它们将在控制器的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哈希中的数组?

1 个答案:

答案 0 :(得分:5)

*的 捂脸 *

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

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

猜猜我的URL语法有点太过分了。

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