Rspec + Rails:POST URL参数到控制器

时间:2012-03-08 05:48:11

标签: ruby-on-rails rspec

我希望我的用户

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

并安排POST到达控制器“controllername”为

 params={ :p2 => "v2", :p3 => "v3" }
 p1=v1

或者,实际上,我可以使用任何其他外观到控制器;重点是URL中的最后一个单词(“v1”)需要提供给控制器使用,与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

但我无法弄清楚如何发布(来自控制器规范)。这些都不起作用:

post :create, parameters
post :create, parameters, 'foofoo'
post :create, parameters, :p1 => 'foofoo'
post :create, :p1 => 'foofoo', parameters

1 个答案:

答案 0 :(得分:1)

对于你的例子:

内部controllername_controller_spec.rb

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

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