97 votes

Test du contrôleur RSpec - Réponse vide.body

Je suis coincé avec un problème lors de l'essai de mon contrôleurs avec RSpec - la réponse.corps appel renvoie toujours une chaîne vide. Dans le navigateur, tout s'affiche correctement, et le concombre tests de fonctionnalités semblent obtenir la droite, mais RSpec échoue à chaque fois.

D'autres attentes sur la réponse de l'objet, comme response.should render_template('index') passe sans aucun problème.

N'avez-vous rencontré ce problème avant? Peut-être la réponse html peut être obtenue d'une autre façon?

Comme pour les versions, les Rails 2.1.0, RSpec 1.2.7.

183voto

mislav Points 7379

Par défaut, rspec-rails de hacks dans les Rails pour empêcher de réellement rendre modèles d'affichage. Vous ne devriez tester le comportement de vos actions & les filtres de votre contrôleur de tests, pas le résultat du modèle de rendu, c'est ce que vue les spécifications pour.

Cependant, si vous souhaitez faire de votre contrôleur spécifications de rendre les modèles de l'application normalement, l'utilisation de l' render_views directive:

describe YourController do
  render_views
  ...
end

3voto

Thomas Points 1753

RSpec 2+: Si vous voulez vérifier bout à bout - url au corps de la réponse - utilisez une spécification de demande au lieu d'une spécification de contrôleur .

2voto

John Lockwood Points 1545

Comme j'ai travaillé avec un problème similaire (qui m'a conduit à cette question), il m'est apparu qu'il existe différentes façons de la peau le même chat. En d'autres termes, plutôt que de vérifier pour le corps du texte, vous pourriez être en mesure de vérifier le contenu de la mémoire flash.

response.body.should =~ /Invalid email or password/

peut-être un équivalent par chèque à:

flash[:alert].should == "Invalid email or password"

Pour moi, celui-ci semble un peu plus souple sera exécuté de toute façon, mais il peut ne pas être appropriée dans tous les cas.

Cheers,

Jean

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X