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ì.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top