ruby-on-rails - Rspec+Rails : POST URL-parameter to controller

标签 ruby-on-rails rspec

我希望我的用户做

POST /controllername/v1
{
   "p2":"v2",
   "p3":"v3"
}

并安排POST到达 Controller “controllername”作为
 params={ :p2 => "v2", :p3 => "v3" }
 p1=v1

或者,实际上,我可以使用 Controller 的任何其他外观;关键是 URL 中的最后一个词(“v1”)需要提供给 Controller 以供 Controller 使用,这与 p2/v2 和 p3/v3 非常相似。

而且,我需要用 Rpec 测试这个。具体来说:
rspec 2.6.4
rails 3.0.9
ruby 1.9.2

我正在使用路线
match '/controllername/:p1' => 'controllername#create'

这个 rspec 规则有效:
it 'should route to :create' do
  assert_routing({ :path => '/controllername/foofoo',
                   :method => :post },
                 { :controller => "controllername",
                   :action => 'create',
                   :p1 => 'foofoo' })
end

但我不知道如何发布到它(从 Controller 规范)。这些都不起作用:
post :create, parameters
post :create, parameters, 'foofoo'
post :create, parameters, :p1 => 'foofoo'
post :create, :p1 => 'foofoo', parameters

最佳答案

对于您的示例:

controllername_controller_spec.rb

post :create, :p1 => "foo", :p2 => "bar", :p3 => "baz"

本质上,只需将路径中的所有参数和您希望在请求正文中提供的参数放在一起

关于ruby-on-rails - Rspec+Rails : POST URL-parameter to controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9613437/

相关文章:

javascript - 无法在 AngularJS 中的请求中指定 header

javascript - 如何在 ruby​​ 中使用 javascript 变量

ruby-on-rails - Rails CanCanCan/RoleModel/Canard : limit to user doesn't work

html - 链接到 Rails 中的根路径

ruby-on-rails - Capybara:尝试模拟按 <ENTER> 时出现 NotSupportedByDriverError

ruby-on-rails - Rack::Test 导致 ActiveRecord::AssociationTypeMismatch

ruby-on-rails - 如何过滤掉数组中的空元素

ruby - 如何在 Watir 中使用类名计算表行数?

unit-testing - 如何在 rspec 单元测试中隔离 Puppet 函数模拟

ruby-on-rails - 我们如何使用 rspec 测试交互组织者?