2013-12-12 55 views
8

對於我的測試,我需要一個控制器,我可以設置自己的參數。隨着參數我的意思是,你得到一個調用controller.params如何從控制器存根參數?

{"action"=>"show", 
"controller"=>"merchants", 
"wine_id"=>"1", 
"id"=>"346343"} 

的問題是什麼時候,我不知道存根的正確方法是在這裏。有三個事件:

  • controller.request.env['action_dispatch.request.path_parameters']
  • controller.params
  • controller.url_options[:_recall]

在所有三個相同的信息被儲存,但什麼是設置這些值的接口方式是什麼?

+0

你的意思是專門在你的測試套件? – Donovan

+0

你是說你通過所有三種方法訪問參數? –

+0

@Donovan是的@PeterAlfvin不,看起來最終都是來自'controller.request.env ['action_dispatch.request.path_parameters']'查看源代碼。 –

回答

12

訪問params的常用方法是controller.params。所以我會建議你存根參數

controller.stub(:params).and_return({:param1 => "value", :param2 => "value"}) 
+0

是的,從控制器中工作的人肯定,但Rails本身在內部使用參數時會超過controller.request.path_parameters。存根方法非常方便,不知道那個。 –

+0

我把這個放在我的RSpec測試裏面的一個例子中,但是我得到一個'LocalJumpError:沒有給出來自C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rspec-rails的 塊-3.5.2/lib/rspec/rails/example/controller_example_group.rb:77:在'class_exec'' –

相關問題