Disabilita rendering durante il test di un controller
-
08-07-2019 - |
Domanda
Sto usando Test :: Unit con shoulda per testare un controller.
Dal momento che sto solo testando il controller non voglio che la vista sia renderizzata.
Sto testando alcuni oggetti, alcuni errori vengono generati quando viene visualizzata la vista, ma il test non dovrebbe fallire, perché il controller è corretto.
Quindi, c'è un modo per disabilitare il rendering di un modello / vista, dai miei test?
Ho sentito che rSpec funziona così.
Soluzione
Se stai usando Mocha, è facile. Aggiungi questo al tuo test individuale o al tuo metodo di installazione:
@controller.expects(:render)
Se non lo sei, beh, usa Mocha.
gem install mocha
Quindi nel tuo test_helper.rb
require 'mocha'
Altri suggerimenti
Non dovresti davvero vedere alcuna vista nei tuoi test. Puoi pubblicare il tuo codice di prova in errore? I test del controller (funzionale) dovrebbero solo verificare che si verifichi una determinata azione quando viene chiamata la tua azione. Ad esempio, dovrebbe verificare che esegua il rendering della vista corretta o reindirizza a un'azione diversa. Puoi anche controllare la configurazione del flash o di altre variabili per la vista. È questo il tipo di questo che stai testando?
Ecco un buon esempio di test di un'azione show con una richiesta get presa dai documenti shoulda:
class UsersControllerTest < Test::Unit::TestCase
context "on GET to :show" do
setup { get :show, :id => 1 }
should_assign_to :user
should_respond_with :success
should_render_template :show
should_not_set_the_flash
should "do something else really cool" do
assert_equal 1, assigns(:user).id
end
end
end
Forse dai un'occhiata a guide rotaie che è anche abbastanza buono.