らくだ🐫にもできるRailsチュートリアル|3.4

3.4 少しだけ動的なページ

Home、Help、Aboutそれぞれのページタイトルが表示されるようにしていく
準備として元々用意されているレイアウトのファイルを一時的に無効に

3.4.1 タイトルをテストする (Red)

HTMLの構造についてのおさらい

assert_selectメソッド → 特定のHTMLタグが存在するかテストするメソッド
<title>タグ内に「Home | Ruby on RailsTutorial Sample App」が存在するかと言う1文をそれぞれのテストに追加

アサーションメソッドとは何ぞ

assert(assert_○○)なメソッド
テストの判定をしてくれる便利で重要な物。いろいろな種類がある。
Rails テスティングガイド 2.6 利用可能なアサーション

テストスイートとは何ぞ

何を調べるのか
test ~ do



end
この固まりがテストケース
で、テストケースの固まりがテストスイート

で、この状態でテストをするとRED

3.4.2 タイトルを追加する (Green)

本文ママ

演習

指示通りにテストコードを更新してテストもGREEN

setupという特別なメソッド (各テストが実行される直前で実行されるメソッド)

いまいちわかりずらいのですが前提条件って感じでしょうか。
この中で設定した変数は以降スコープ内のテストケースで使用できる。的な。

で、「@base_title = “Ruby on Rails Tutorial Sample App”」と設定してあるので
「”Home | #{@base_title}”」→変数展開→「”Home | Ruby on Rails Tutorial Sample App”」となる訳です(よね?)

表記は変わっているけどやっている内容は変わらないのでテストはGREEN

3.4.3 レイアウトと埋め込みRuby (Refactor)

重複したコードを整理してすっきりさせる

provideメソッドとは何ぞ

template(view)間で値を渡すためのメソッド
受け取るメソッドのyieldとセットで使われる

HelpとAboutのページも同じ様に変更する

リファクタリングの続き

それぞれのページの構造がほぼ同じものになっているため更に整理
まず、初めに無効にしていたレイアウト用のファイルを元に戻します

そして編集

さらにHome,Help,Aboutの各ページを編集

テスト結果

演習

テストを書く(現状ではRED

ルーティング

アクション

本文に従ってcontact.html.erbを作る → テストGREEN

3.4.4 ルーティングの設定

本文ママ

但し、ルーティングを書き換えたためstatic_pages_home_urlヘルパーが無効になってテストが通らなくなる
以下の演習で修正

演習

リスト 3.41にrootルーティングを追加したことで、root_urlというRailsヘルパーが使えるようになりました (以前、static_pages_home_urlが使えるようになったときと同じです)。リスト 3.42のFILL_INと記された部分を置き換えて、rootルーティングのテストを書いてみてください。

実はリスト 3.41のコードを書いていたので、先ほどの課題のテストは既に green になっているはずです。このような場合、テストを変更する前から成功していたのか、変更した後に成功するようになったのか、判断が難しいです。リスト 3.41のコードがテスト結果に影響を与えていることを確認するため、リスト 3.43のようにrootルーティングをコメントアウトして見て、 red になるかどうか確かめてみましょう (なおRubyのコメント機能については4.2.1で説明します)。最後に、コメントアウトした箇所を元に戻し (すなわちリスト 3.41に戻し)、テストが green になることを確認してみましょう。

該当箇所をコメントアウト → RED
元に戻す → GREEN

まとめとか感想

今更ですがあれですね。
こうやって纏めながらやり直してると理解が深まるし、新しい気付きもあっていいですね。

らくだ🐫にもできるRailsチュートリアルとは

「ド」が付く素人のらくだ🐫が勉強するRailsチュートリアルの学習記録です。
自分用に記録していますが、お役に立つことがあれば幸いです。

調べたとはいえらくだ🐫なりの解釈や説明が含まれます。間違っている部分もあるかと思います。そんな所は教えて頂けますと幸いなのですが、このブログにはコメント機能がありません💧お手数おかけしますがTwitterなどでご連絡いただければ幸いです