2012-03-08 46 views
4

我希望我的用戶做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, parameters, :p1 => 'foofoo' 
post :create, :p1 => 'foofoo', parameters 
+0

測試日誌上的測試控制器調用是什麼? – shingara 2012-03-08 08:42:34

回答

1

對於示例:

controllername_controller_spec.rb

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

本質上說,只是放在一起,你將不得不在路徑的所有參數和那些要在提供請求主體

相關問題