ruby-on-rails - 将同名参数传递给 Rspec POST 请求以创建数组

标签 ruby-on-rails ruby testing rspec parameters

我有一个 API 调用,我需要在其中发布 ID 数组。我知道如果我将几个名为 ids[] 的参数传递给我的请求,它们将在 Controller 的 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 方法以在我的 Controller 的 params 散列中获取一个数组?

最佳答案

*捂脸*

我不知道为什么我没有想到,但您可以只传递一个数组作为哈希值之一:

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

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

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

关于ruby-on-rails - 将同名参数传递给 Rspec POST 请求以创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21157562/

相关文章:

ruby-on-rails - 请求规范按预期工作; Controller 规范允许 :post when it shouldn't

ruby-on-rails - ruby /Rails : undefined method `set' for ActiveJob

ruby-on-rails - Rails远程表单通过javascript提交

ruby - 将 UTF-8 空间更改为可使用 RegEx 的空间

php - 使用 PhpSpec 测试将 UploadedFile 附加到表单提交

ruby-on-rails - 如何获得 gem 上可用的命令列表?

ruby - Ruby 中是否有独立的 i18n 库?

ruby-on-rails - Rails 范围/类方法来选择存在关联的项目

angular - [ Angular 7+] : How to unit test a service inside another service spec?

ios - is_Trial_period 在 Apple 的收据沙盒中保留为 "on"