Railsチュートリアル3章
Railsチュートリアルで覚えが悪かったところや、分かりにくかったところの更なる理解を目的としてブログを書いていこうと思います。 僕のように今RubyやRails勉強中という初学者の方も多いと思うので、多少はそういう方の参考になればいいなと。 基本的には全体の要約というよりは、自分の気になること、理解に時間の掛かった部分をざっくりまとめる形式にしていこうと思います。 その方が僕の力になると思うからです。
Railsチュートリアルはいきなりやると難しいとの話だったので、ProgateのRuby/Railsコース完了済みです
環境構築を除き、これまではprogateで学習済みの内容だったんですが、ここにきて初めての内容。 Rails初テスト。Rilsチュートリアルはテスト駆動開発(TDD)と言う手法で記述されています。 node.jsのExpressにて単体テスト/統合テストはやったことがあるが、Railsにおいては初めてなので、多少進みが遅くなる
コントローラーテストの基本文
例
test "テスト名" do get static_pages_help_url //GETリクエストをhomeアクションに対して発行 assert_response :success //バグがなければリクエストに対するレスポンスはsucsessになる end
となる。
<!DOCTYPE html> <html> <head> <title>Greeting</title> </head> <body> <p>Hello, world!</p> </body> </html>
htmlの基本構造はだいたいこうなのですが、例えば上記のhtmlのtitleにきちんと望む内容が含まれているかどうかのテストは
assert_selectメソッドを使い
test "テスト名" do get static_pages_home_url assert_response :success assert_select "title", "含まれているかテストしたいhtmlの内容"
assert_selectメソッドでは、特定のHTMLタグが存在するかどうかをテストします 。
次にリファクタリングについて。
テスト駆動開発においてはRED→GREEN→リファクタリング、
つまり、まず一番最初にテストを記述して、そのテストが失敗するコード、成功するコード、より保守のしやすいきれいなコードに書き直すという順に作っていくのですが、そのコードを書き直すという部分。
重複する部分をapplication.html.erbの<%= yield%>にまとめてしまう。
テストを先に書いておくと、リファクタリングをするときもバグを未然に防げて安心できる。
最後に テスト時、成功/失敗の色表示で見やすくしてくれる「minitest reporters 」と、ファイルの変更を検出して必要なテストだけを自動実行してくれる「Guard」を追加。
「minitest reporters 」はtest/test_helper.rbに追加記述するだけ。
「Guard」は初期化コマンドを実行し、
bundle exec guard init
cloud9環境なのでtmuxをインストール sudo yum install -y tmux
Guardは他のターミナルに
bundle exec guard
と打つことでテスト環境を走らせ、ファイルを変更するとリアルタイムにテストしてくれるすごいやつです。 Return(Enter)キーを打つとフルでテストしてくれ、Ctrl+Dで終了。
以上で3章は終了です。