Mi chiedo come convalidare la gente del posto passati a rendere modello di controllerCome convalidare i locali di rendere modello in rspec
Controller:
def lelf_panel
# ...
if some_condition
locals_hash = some_very_long_hash_A
else
locals_hash = some_very_long_hash_B
end
render :partial => "left_panel", :layout => false, :locals => locals_hash
end
Spec attuale:
it 'should render correct template for lelf_panel' do
# ...
get 'left_panel'
response.should render_template('system/_left_panel')
end
Ora ho bisogno di finire Rcov per questo controller, quindi ho bisogno di aggiungere/modificare le specifiche per coprire entrambi i risultati di 'some_condition'. e voglio convalidare i locals 'lelf_panel' passati al rendering, come se io convalidi solo il render_template, la pagina parziale resa per entrambi i risultati sia la stessa.
ho controllare la 'render_template' nei documenti RSpec in http://rubydoc.info/gems/rspec-rails/2.8.1/RSpec/Rails/Matchers/RenderTemplate:render_template
solo fornisco e 2 ° params per messaggio, così come posso testare i locali passati a rendere?
Questo ha funzionato per me - ma solo dopo ho messo il comando get DOPO il commento dovrebbe_receive, e ho anche bisogno di aggiungere controller.stub (: render) per evitare un errore - ma non sono sicuro del perché .... – Phantomwhale
Questa è la risposta superiore. La modifica di un'applicazione per soddisfare le esigenze di una libreria di test è un odore di codice. – user94154
@Phantomwhale Ho appena ricevuto lo stesso errore che hai riscontrato. Il problema è che le nostre aspettative non rendono o reindirizzano nulla, quindi il rendering predefinito viene chiamato alla fine dell'azione. Questo andava bene con rspec, ma ora è un'attesa insoddisfatta. –