Je reçois cette erreur de manière récurrente dans le tutoriel RoR de Michael Hartl. Oui, j'ai cherché sur Google cette question et j'ai vu qu'elle avait été répondue plusieurs fois. J'ai essayé les solutions proposées et elles n'ont pas résolu le problème. Voici l'erreur :
ec2-user:~/environment/sample_app (static-pages) $ rails test
Running via Spring preloader in process 16202
Run options: --seed 53019
# Running:
F
Failure:
StaticPagesControllerTest#test_should_get_about [/home/ec2-
user/environment/sample_app/test/controllers/
static_pages_controller_test.rb:20]:
Expected at least 1 element matching "title", found 0..
Expected 0 to be >= 1.
bin/rails test test/controllers/static_pages_controller_test.rb:17
F
Failure:
StaticPagesControllerTest#test_should_get_home [/home/ec2-
user/environment/sample_app/test/controllers/
static_pages_controller_test.rb:8]:
Expected at least 1 element matching "title", found 0..
Expected 0 to be >= 1.
bin/rails test test/controllers/static_pages_controller_test.rb:5
F
Failure:
StaticPagesControllerTest#test_should_get_help [/home/ec2-
user/environment/sample_app/test/controllers/
static_pages_controller_test.rb:14]:
Expected at least 1 element matching "title", found 0..
Expected 0 to be >= 1.
bin/rails test test/controllers/static_pages_controller_test.rb:11
Finished in 0.171213s, 17.5220 runs/s, 35.0441 assertions/s.
3 runs, 6 assertions, 3 failures, 0 errors, 0 skips
Il y a une incompréhension quant à ce qui est essayé d'afficher et ce que l'entrée est. Je comprends cette partie. Mais littéralement, mon code est supposé fonctionner. J'ai copié exactement ce qui était dans le livre..
Voici mon code pour static_pages_controller_test.rb :
require 'test_helper'
class StaticPagesControllerTest < ActionDispatch::IntegrationTest
test "should get home" do
get static_pages_home_url
assert_response :success
assert_select "title", "Home | Ruby on Rails Tutorial Sample App."
end
test "should get help" do
get static_pages_help_url
assert_response :success
assert_select "title", "Help | Ruby on Rails Tutorial Sample App."
end
test "should get about" do
get static_pages_about_url
assert_response :success
assert_select "title", "About | Ruby on Rails Tutorial Sample App."
end
end
Voici mon code pour applications.html.erb :
<%= yield(:title) %> | Ruby on Rails Tutorial Sample App
<%= csrf_meta_tags %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
<%= yield %>
Je suis donc très confus pourquoi cela ne fonctionne pas. Une réponse d'un autre post a suggéré que cela avait à voir avec quelque chose lié à Help n'ayant pas de balise html.. mais le mien en a. Est-ce que quelqu'un voit ce qui se passe ici. J'utilise l'IDE cloud9.
Merci, Ben
EDIT 1: Mise à jour
Voici mon code pour home, help et about html. Home :
<% provide(:title, "Home") %>
Sample App
Il s'agit de la page d'accueil de l'application exemple
Ruby on Rails
Help :
<% provide(:title, "Help") %>
Help
Obtenez de l'aide sur le Tutoriel Ruby on Rails sur la
section d'aide Rails Tutorial.
Pour obtenir de l'aide sur cette application exemple, consultez le
Tutoriel Ruby on Rails
livre.
About :
<% provide(:title, "About") %>
About
Le Tutoriel Ruby on Rails est un
livre et
une série de screencasts
pour apprendre le développement web avec
Ruby on Rails.
Il s'agit de l'application exemple pour le tutoriel.
Pour répondre aux questions ci-dessous, ce code n'a pas encore été poussé sur le repo. Je l'héberge localement (et le test) avant de le poster. Lorsque je le regarde dans le navigateur local, les pages fonctionnent, mais le titre (l'onglet en haut du navigateur) n'est pas rempli. Il est donc clair que la fonction de titre ne fonctionne pas.
Mise à jour 2: Routes.rb ajouté
Rails.application.routes.draw do
root 'static_pages#home'
get 'static_pages/home'
get 'static_pages/help'
get 'static_pages/about'
get 'static_pages/contact'
# Pour plus de détails sur le DSL disponible dans ce fichier, voir http://guides.rubyonrails.org/routing.html
# root 'application#hello'
end