Open koya-kudaka opened 4 years ago
railsのありがたい点!!
rails g controller
を実行した時点で、テストファイルが用意されている!
TDDのサイクル red(失敗) ・ green(成功) ・ REFACTOR(リファクタリング)
test>controllers>static_pages_controller_test.rb
アセーションメソッドを使い、テストコードを書く
test "should get contact" do
get static_pages_contact_url
assert_response :success
end
↓
$ rails testを実行
判定:RED メッセージ:contactへのURLがないよ!
↓
ルーティングを書く
↓
$ rails testを実行
判定:RED メッセージ:static_pages_controllerにcontactアクションがないよ!
↓
アクションを書く
↓
$ rails testを実行
判定:RED メッセージ:viewsにcontactページがないぞ!
↓
contactページを作成
↓
Green!!!
ここまでは、静的ページでREDとGREENしか行ってなかった。
2, 動的コンテンツにするためにRED・GREEN・REFACTORを全て使ったテスト!
目的 全てのページの
def setup
@base_title = "Ruby on Rails Tutorial Sample App"
end
setupという特別なメソッドを使って上の文をテストファイルに追加。
↓
assert_select "title", "Contact | #{@base_title}"
テストをする上のコードも追加。
↓
rails test実行 判定:RED
理由:contact.html.erbのタイトルには、 "Contact | #{@base_title}"の部分と一致する部分がないから。
↓
contact.html.erbの
タグに以下を追加<title><%= yield(:title) %> | Ruby on Rails Tutorial Sample App</title>
contact.html.erbの一行目に以下を追加
<% provide(:title, "Contact") %>
↓
GREEN!
一応これで成功ではあるけど、REFACTORがない。
最後に、コードがより良質なコードに改善するために、REFACTORを行う!
以下のコードをstatic_pages>contact.html.erbからlayout>application.html.erbの
タグへ移動する。<title><%= yield(:title) %> | Ruby on Rails Tutorial Sample App</title>
これで完成!
これやる意味あったかな???ある程度、整理できたからいっか。。。。
目的 自動化テストを作成し、機能が正しく動作するのかをテストする習慣を身につける。 チュートリアルを通して、テストをどう論理的に実行すべきなのか、どのような順序で、どのタイミングでテストすればいいのか、どんなメソッドが必要なのかが曖昧なので、そこを理解するために。
手法 テスト駆動開発(TDD)
行うテスト コントローラーテスト
必要コマンド
$ rails test
何をテストするか? 今回は、演習の問題を使ってみる。 contactページの表示をする。