ruby-on-rails – Rspec Rails:POST URL参数到控制器

我希望我的用户这样做

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,:p1 => 'foofoo'
post :create,:p1 => 'foofoo',parameters

解决方法

对于你的例子:

在controllername_controller_spec.rb中

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

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

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...