質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

1132閲覧

Railsチュートリアル第3章でテストに通らない

tat_23

総合スコア18

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2019/05/30 01:45

編集2019/05/30 05:38

前提・実現したいこと

Railsチュートリアル第3章に取り組んでおります。
途中どうしてもテストがパスしないので、GREENになるようにしたいです。

順番にチュートリアル通りに進めてきて、リスト3.39のところ、リファクタリングをしてテストがGREENになるはずのところです。

$ rails test 3 tests, 6 assertions, 0 failures, 0 errors, 0 skips

しかしこうはならず...

$ rails t Running via Spring preloader in process 6778 /home/ec2-user/environment/sample_app/db/schema.rb doesn't exist yet. Run `rails db:migrate` to create it, then try again. If you do not intend to use a database, you should instead alter /home/ec2-user/environment/sample_app/config/application.rb to limit the frameworks that will be loaded. Run options: --seed 28115 # Running: FFF Finished in 0.180342s, 16.6351 runs/s, 33.2702 assertions/s. 1) Failure: StaticPagesControllerTest#test_should_get_home [/home/ec2-user/environment/sample_app/test/controllers/static_pages_controller_test.rb:13]: Expected at least 1 element matching "title", found 0.. Expected 0 to be >= 1. 2) Failure: StaticPagesControllerTest#test_should_get_about [/home/ec2-user/environment/sample_app/test/controllers/static_pages_controller_test.rb:25]: Expected at least 1 element matching "title", found 0.. Expected 0 to be >= 1. 3) Failure: StaticPagesControllerTest#test_should_get_help [/home/ec2-user/environment/sample_app/test/controllers/static_pages_controller_test.rb:19]: Expected at least 1 element matching "title", found 0.. Expected 0 to be >= 1. 3 runs, 6 assertions, 3 failures, 0 errors, 0 skips

何度やってもこうなってしまうのです。
どうやら見てみると、私のstatic_pages_controller_test.rbファイルの、

require 'test_helper' class StaticPagesControllerTest < ActionDispatch::IntegrationTest def setup @base_title = "Ruby on Rails Tutorial Sample App" 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 end

home,help,aboutそれぞれ3つのテスト内にあるassert_select "title", "Home | #{@base_title}"に相当する部分がいけないとのこと。

タイプミスの可能性も考えてチュートリアルのコードをそのままコピペして使ってみましたが改善せず...
テストだけではなく3つそれぞれのhtmlファイル、共通した処理をまとめたviews/layouts/application.html.erbファイルもコピペしてみました。

全くのお手上げ状態でして、何が悪いのかさっぱり分かりません。

どうかお力を貸していただけないでしょうか。

よろしくお願い致します。

[追記]
home.html.erb

<% provide(:title, "Home") %> <h1>Sample App</h1> <p> This is the home page for the <a href="https://railstutorial.jp/">Ruby on Rails Tutorial</a> sample application. </p>

about.html.erb

<% provide(:title, "About") %> <h1>About</h1> <p> <a href="https://railstutorial.jp/">Ruby on Rails Tutorial</a> is a <a href="https://railstutorial.jp/#ebook">book</a> and <a href="https://railstutorial.jp/#screencast">screencast</a> to teach web development with <a href="http://rubyonrails.org/">Ruby on Rails</a>. This is the sample application for the tutorial. </p>

help.html.erb

<% provide(:title, "Help") %> <h1>Help</h1> <p> Get help on the Ruby on Rails Tutorial at the <a href="https://railstutorial.jp/help">Rails Tutorial help section</a>. To get help on this sample app, see the <a href="https://railstutorial.jp/#ebook"><em>Ruby on Rails Tutorial</em> book</a>. </p>

長くなり申し訳ありませんが、参考までに記載させていただきました。

補足情報(FW/ツールのバージョンなど)

cloud9使用
macOS使用

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

/app/views/static_pages/{home, help, about}.html.erb
の3つのファイルのいずれかは正しい状態ですか?

つまりはリスト3-36~3-38と同じコードになってますか?

上記3ファイルをご提示いただければわかりそうな気がしますが、
現時点ではおそらくどれかのファイルでミスがあると推測します。


上の回答、エラー文読み違えてたので訂正します。
エラー文には

Expected at least 1 element matching "title", found 0..

「titleにマッチする要素が1つ以上必要だけど、0個見つかったよ」というエラーが出てます。
つまり、「titleタグが見つからないぞ」ということです。

titleタグはapp/views/layouts/application.html.erbに共通化してるはずなので、そこを調べてみてください。

投稿2019/05/30 02:23

編集2019/05/30 06:27
dice142

総合スコア5158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tat_23

2019/05/30 05:40

早速のご回答ありがとうございます。 追記した通り、3-36~3-38と同じコードにはなっているはずなのですが... もし宜しければご指摘のほどお願いできないでしょうか。
dice142

2019/05/30 06:23

すみません、エラー文読み違えてました。 titleタグが見つからなかったというエラーが出てるので、app/views/layouts/application.html.erb に問題がありそうです。
tat_23

2019/05/30 06:58

ご指摘を受けてよくよく確認してみましたら、ファイル名を変更した際に1字タイプミスがあり、それが原因でテストが通らなかったことが分かりました。私の不注意で申し訳ありません。 無事に対処できました。 気付きを与えてくださって本当にありがとうございました。
dice142

2019/05/30 07:02

解決できたようでよかったです。 私も読めてませんでしたが、エラー文はだいたい解決に必要な情報を出してくれます。 エラーが起きた際には参考にしてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問