9
votes

Vérification du titre de page avec RSPEC

Je cours via Michael Hartl's tutoriel de rails .

J'essaie de vérifier le titre de ma page. Le test ressemble à ceci: xxx

la section de la tête HTML ressemble à ceci xxx

Je reçois l'échec suivant

1) PagesController Obtenez 'Home' devrait avoir le bon titre Échec / Erreur: réponse.should avoir_selector ("titre",: contenu => "RUBY ON RAILS Tutorial Sample App | Accueil") attendu après la sortie pour contenir un rubis sur rails Tutoriel Sample App | Accueil étiqueter: # ./spec/controlers/pages_controller_spec.rb:13:1 `bloquer (3 niveaux) dans '

Je m'attends à ce que cela passe. Qu'est-ce que je fais mal? J'utilise des rails 3 et RSPEC 2.0.0


0 commentaires

4 Réponses :


5
votes

Les spécifications du contrôleur ne rendent pas normalement la vue complète, car elles sont destinées à tester des contrôleurs isolément. Vous pouvez dire à RSPEC de restituer la page entière en incluant la directive intégrate_views en haut de l'exemple de groupe: xxx

Cependant, vous devez vous demander si vous voulez vraiment vous demander Faites ceci, ou s'il aurait plus de sens d'écrire des spécifications d'affichage.

BTW Vous pouvez également utiliser la syntaxe sélecteur CSS3 pour enregistrer quelques coups de frappe (peut-être inclure les correspondants Webrat pour cela): xxx

edit

pour rspec2, remplacer intégrate_views avec rendu_views < / p>


3 commentaires

J'ai essayé de mettre la directive Inteint_Views en haut, mais maintenant, je reçois une erreur de syntaxe


Oops, vous devez être sur Rspec 2. Essayez render_views .


Merci, peut-être simplement éditer votre réponse pour dire que vous devriez utiliser Render_Views sur RSPEC 2?



0
votes

Je soupçonne fortement que vous ayez une faute de frappe quelque part.

À compter de cet instant, je travaille à travers l'exercice 4 du chapitre 11. Chaque problème unique que j'ai eu avec le tutoriel s'est avéré être une faute de frappe de ma part.

Remarque: Je ne coupe pas et ne colle pas. Je me frappe dans tout le code à la main.


1 commentaires

J'ai fait la cocule-coller la chose ... et cela a fonctionné parfaitement une fois que j'ai mis rendu_views au sommet



2
votes

J'ai trouvé plus facile de passer à Capybara (j'utilise des rails 3.0.1, RSPEC 2.0.1, Ruby 1.9.2). Maintenant, vous pouvez faire quelque chose comme xxx


0 commentaires

2
votes

Cette question a l'air vieux, ce qui explique pourquoi il y a maintenant une meilleure façon.

Les options suivantes pour moi: P>

it "has the correct page title", js: true do
  visit "/users/sign_in" # for example
  expect(page.title).to include "Sign In or Create a New Account"
end


1 commentaires

De plus, vous devriez être très prudent lorsque vous utilisez la méthode Inclure dans ce cas. Si vous avez cette chaîne dans le titre, il passera cependant des choses indésirables aussi. Je vous recommanderais d'utiliser la méthode eq dans ce cas, car elle échouera si la chaîne exacte n'est pas adoptée.