Ruby on rails 如何在Rails测试中指定POST参数?
使用Test::Unit和Shoulda。正在尝试测试Ruby on rails 如何在Rails测试中指定POST参数?,ruby-on-rails,ruby,testing,shoulda,Ruby On Rails,Ruby,Testing,Shoulda,使用Test::Unit和Shoulda。正在尝试测试用户。创建。我的理解是Rails表单为如下对象发送参数: user[email] 在你的行动中会变成散列,对吗 params[:user][:email] 好的,在我的测试中我试过 setup { post :create, :post => { 'user[email]' => 'invalid@abc' } } 及 在这两种情况下,在我的操作中,params[:user]为零 post :create, :user =&
用户。创建。我的理解是Rails表单为如下对象发送参数:
user[email]
在你的行动中会变成散列,对吗
params[:user][:email]
好的,在我的测试中我试过
setup { post :create, :post => { 'user[email]' => 'invalid@abc' } }
及
在这两种情况下,在我的操作中,params[:user]
为零
post :create, :user => { :email => 'foo@bar.com' }
get、post、put、delete所有测试方法的通用格式如下:
def post(action_name, params_hash = {}, session_hash = {})
在测试中,params散列直接发送到控制器操作的params
,而不进行任何转换。即使进行集成测试,您也不需要测试这个字符串到参数的转换,因为rails框架测试很好地涵盖了它。另外,所有需要参数的测试方法都以这种方式接受散列,而无需抱怨,从而使您的工作变得简单
post :create, {:post => {}, :user => {:email => 'abc@abcd'} }
在本例中,params[:post]是{},
params[:user]是{:email=>'abc@abcd'},
参数[:用户][:电子邮件]为'abc@abcd"
post :create, {:post => {:user => {:email => 'abc@abcd'} } }
在这种情况下,params[:post][:user][:email]是'abc@abcd“这也会起作用:“post:create,{:email=>”foo@bar.com“}”并且在控制器端,您将拥有:params[:email]提供给您的foo@bar.com'
post :create, {:post => {:user => {:email => 'abc@abcd'} } }