2009-05-07 4 views
2

J'utilise Test :: Unit avec shoulda pour tester un contrôleur.Désactiver le rendu lors du test d'un contrôleur

Depuis que je ne fais que tester le contrôleur, je ne veux pas que la vue soit rendue.

Je cogne des objets, certaines erreurs sont lancées lorsque la vue est affichée, mais le test ne doit pas échouer car le contrôleur est correct.

Alors, existe-t-il un moyen de désactiver le rendu d'un modèle/d'une vue, à partir de mes tests?

J'ai entendu que rSpec fonctionne comme ça.

Répondre

5

Si vous utilisez du moka, c'est facile. Ajoutez ceci à votre test individuel ou votre méthode d'installation:

@controller.expects(:render) 

Si vous n'êtes pas, eh bien, utilisez Mocha.

gem install mocha 

Puis dans votre test_helper.rb

require 'mocha' 
-1

Vous ne devriez pas vraiment voir de vue dans vos tests. Pouvez-vous poster votre code de test défaillant? Les tests du contrôleur (fonctionnel) doivent uniquement vérifier qu'une action particulière se produit lorsque votre action est appelée. Par exemple, il doit vérifier qu'il rend la vue correcte ou redirige vers une action différente. Vous pouvez également vérifier la configuration du flash ou d'autres variables pour la vue. Est-ce le type de ce que vous testez?

Voici un bon exemple de tester une action show avec une demande de prise des rendez Shoulda docs:

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 

peut-être prendre un oeil à rails guides ce qui est assez bon aussi.

Questions connexes