2013-12-12 17 views
8

Per i miei test ho bisogno di un controller in cui posso impostare i miei parametri. Con i parametri Voglio dire quello che si ottiene quando si richiama controller.paramsCome disattivare i parametri da un controller?

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

Il problema è che io non so che cosa il modo corretto per stubbing è qui. Ci sono tre ricorrenze:

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

in tutte e tre le stesse informazioni vengono memorizzate, ma qual è il modo interfacciato per impostare questi valori?

+0

Intendi in particolare nella tua suite di test? – Donovan

+0

Stai dicendo che accedi ai parametri attraverso tutti e tre i metodi? –

+0

@Donovan Sì @PeterAlfvin No. Sembra che alla fine tutto dipenda da 'controller.request.env ['action_dispatch.request.path_parameters']' guardando il codice sorgente. –

risposta

12

Il modo usuale di accesso ai parametri è controller.params. Quindi ti consiglierei di modificare i parametri

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

Sì, da quello funzionante nel controller sicuramente, ma Rails stesso controlla controller.request.path_parameters quando lavora con i parametri internamente. Il metodo stub è molto utile, non lo sapeva. –

+0

Sto inserendo questo nel mio test RSpec in un esempio, ma sto ricevendo un 'LocalJumpError: nessun blocco dato da 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'' –

Problemi correlati