2013-12-12 15 views
8

Do moich testów potrzebuję kontrolera, w którym mogę ustawić własne parametry. Z parametrami Chodzi mi o nich można uzyskać podczas wywoływania controller.paramsJak zagrupować parametry z kontrolera?

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

jest problem, nie wiem co to właściwy sposób na stubbing jest tutaj. Istnieją trzy zdarzenia:

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

We wszystkich trzech te same informacje są przechowywane, ale co interfejsowy sposób ustawić te wartości?

+0

Masz na myśli konkretnie w swoim zestawie testów? – Donovan

+0

Czy mówisz, że uzyskujesz dostęp do parametrów za pomocą wszystkich trzech metod? –

+0

@Donovan Tak @PeterAlfvin Nie. Wygląda na to, że wszystko sprowadza się do 'controller.request.env ['action_dispatch.request.path_parameters']' patrząc na kod źródłowy. –

Odpowiedz

12

Zwykły sposób uzyskiwania dostępu do parametrów to controller.params. Więc doradziłbym ci params

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

Tak, z pewnością pracuję w kontrolerze, ale Railsy same przejmują parametry controller.request.path_parametry podczas pracy z parametrami wewnętrznie. Metoda stub jest bardzo przydatna, nie wiedziałem o tym. –

+0

Umieszczam to w moim teście RSpec wewnątrz przykładu, ale otrzymuję 'LocalJumpError: no block given from C: /Ruby23-x64/lib/ruby/gems/2.3.0/gems/rspec-rails -3.5.2/lib/rspec/rails/example/controller_example_group.rb: 77: in 'class_exec'' –

Powiązane problemy