Question

J'utilise Test :: Unit avec shoulda pour tester un contrôleur.

Puisque je teste simplement le contrôleur, je ne veux pas que la vue soit rendue.

J'arrête certains objets, certaines erreurs sont générées lors du rendu de la vue, mais le test ne doit pas échouer car le contrôleur est correct.

Alors, y at-il un moyen de désactiver le rendu d’un modèle / vue à partir de mes tests?

J'ai entendu dire que rSpec fonctionnait comme ça.

Était-ce utile?

La solution

Si vous utilisez du moka, c'est facile. Ajoutez-le à votre test individuel ou à votre méthode de configuration:

@controller.expects(:render)

Si vous ne l'êtes pas, utilisez Mocha.

gem install mocha

Ensuite, dans votre test_helper.rb

require 'mocha'

Autres conseils

Vous ne devriez pas vraiment voir de vue dans vos tests. Pouvez-vous publier votre code de test échoué? Les tests (fonctionnels) du contrôleur ne doivent vérifier que le déclenchement d'une action particulière lors de l'appel de votre action. C'est-à-dire qu'il devrait 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 test d'une action show avec une requête get extraite de la documentation 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

Peut-être jetez-vous un coup d’œil sur guides sur les rails ce qui est très bon aussi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top