2017-01-20 3 views
0

Je termine l'exercice pour ajouter une page Contact, mais le test échoue sur le titre de la page.Tutoriel Hartl Rails - Chapitre 3

Voici mon fichier de test:

require 'test_helper' 

class StaticPagesControllerTest < ActionDispatch::IntegrationTest 

    def setup 
    @base_title = "Ruby on Rails Tutorial Sample App" 
    end 

    test "should get root" do 
    get root_url 
    assert_response :success 
    end 

    test "should get home" do 
    get static_pages_home_url 
    assert_response :success 
    assert_select "title", "Home | #{@base_title}" 
    end 

    test "should get help" do 
    get static_pages_help_url 
    assert_response :success 
    assert_select "title", "Help | #{@base_title}" 
    end 

    test "should get about" do 
    get static_pages_about_url 
    assert_response :success 
    assert_select "title", "About | #{@base_title}" 
    end 

    test "should get contact" do 
    get static_pages_about_url 
    assert_response :success 
    assert_select "title", "Contact | #{@base_title}" 
    end 
end 

Voici le fichier contact.html.erb:

<% provide(:title, "Contact") %> 
<h1>Contact</h1> 
<p> 
    Contact the Ruby on Rails Tutorial about the sample app at the 
    <a href="http://www.railstutorial.org/contact">contact page</a>. 
</p> 

J'ai aussi effectué les opérations suivantes:

  • Ajouté le route appropriée
  • Ajout de l'action appropriée

Cependant, je reçois ce message d'erreur:

test_should_get_contact#StaticPagesControllerTest (0.45s) 
    <Contact | Ruby on Rails Tutorial Sample App> expected but was 
    <About | Ruby on Rails Tutorial Sample App>.. 
Expected 0 to be >= 1. 
     test/controllers/static_pages_controller_test.rb:35:in `block in <class:StaticPagesControllerTest>' 

S'il vous plaît noter également que

  • La page affiche correctement, avec le titre de la page attendue (Contact non A propos)
  • J'ai testé à nouveau en utilisant une page complètement nouvelle, mais a eu le même résultat avec 'About' étant retourné dans le titre de la page

Je ne sais vraiment pas pourquoi cela revient, car j'ai suivi le tutoriel de près. Je veux progresser dans le tutoriel, mais si je ne peux pas résoudre ce problème de base, je ne suis pas sûr d'aller très loin!

Répondre

0

Veuillez vérifier votre code sur la deuxième ligne de ce bloc de code.

test "should get contact" do 
    # get static_pages_about_url # This is wrong correct it to as below 
    get static_pages_contact_url 
    assert_response :success 
    assert_select "title", "Contact | #{@base_title}" 
    end 

Vous avez donné un cas de test pour vérifier le titre de la page de contact sur l'URL about qui échouera évidemment le test.

Vous devriez tester le titre de la page de contact sur l'url de contact comme ci-dessus.

Faites le changement et vous devriez y aller!

Aussi un mot de motivation, continuez même si les choses n'ont pas de sens en ce moment parce que plus tard ils le feront. A bientôt :)

+0

merci! C'est incroyable, j'ai regardé ce code pour quelque chose comme l'heure et c'était si simple! –

0

Je pense que vous pourriez essayer de remplacer la ligne get static_pages_about_url (sous test "should get contact" do) avec:

get static_pages_contact_url 

Ce qui se passe est que votre test appelle la mauvaise URL (about, au lieu de contact), ce qui provoque l'erreur lorsque vérifier le <title>.

+0

merci! Je ne voudrais pas passer plus de temps sur quelque chose de si simple. –