はじめに
この記事はTDD Advent Calendar 2013の17日目の参加エントリです。
前日はid:a_suenamiさんのTDDが僕に教えてくれたことでした。
このエントリが目指すところ
「Railsで開発しつつも実はあまりテストを実践出来ていない」という方を対象に、
- Rails*RSpecでunit/functional test
- Capybaraでブラウザの挙動をシミュレート
- FactoryGirlでテストデータを自由に準備
- Guardでファイル編集の度にテストを自動実行
- Sporkでサイクル高速化
を実現するために役立つ記事を紹介します。
RSpecの基本
改めて学ぶ RSpec
RSpec 簡潔に記述する
「RSpecとは何か」と「基本的な書き方」が身に付く2記事。
describeやcontext、subjectといった「骨組み」をこちらで抑えておきましょう。
RSpec/Capybara入門
Rails上で動かしていくので実践に近い形で学べる。
併せてCapybaraやFactoryGirlがどんなものかも分かります。
should はどこに行ったの?も抑えておきましょう。
まずは第6回の「モデルテストの演習」まで。
※なぜかChromeだとサンプルコードが読みづらいです。Safariなら問題ありませんでした。
RSpecもう一歩
Railsのコントローラをテストする
モデルのテスト(unit test)より書きづらいと言われる
コントローラテスト(functional test)ですが、こちらですべきことが分かります。
RSpec でテストを作るのに役立つ「モック/スタブ」のシンプルな説明
各テストを綺麗に分離していこうすると必要になってきます。
Capybara
※概要やセッティングは上記RSpec/Capybara入門-テストの基本構造で掴んでおきましょう。
[Rails][RSpec] Capybaraでフォーム入力をシミュレートしてテストする
Capybaraの便利さを感じる。
Capybara README.md Ja
「何ができるのか」のリファレンスとして、「Navigating」以下の
項目に目を通しておくと良いでしょう。
FactoryGirl
※概要やセッティングは上記RSpec/Capybara入門-letメソッドとFactory Girlで掴んでおきましょう。
factory_girl で最低限知っておきたい4つの使い方
FactoryGirlの概要を理解した後、いざ実践の際に困るのは
「アソシエーションを持つモデルのデータをどう作るか?」ではないでしょうか。
そんな疑問はこちらで解決。
[Ruby] FixtureからFactoryGirlへ
こちらまで理解すればFactoryGirlの普段使いで困ることは無くなると思います。
Guard/Spork
[Rails] RSpecによるBDD(振舞駆動開発)の基本 [SporkとGuardも]
自動かつ高速な快適テスト環境を作りましょう。
+α
Rails でつくる API のテストの書き方(RSpec + FactoryGirl)
APIのテストを書きたくなったらこちら。
rubyで標準出力をテストする方法
標準出力をテストケースに入れたくなることもありますね。
最後に
紹介した記事は必ずしも上から順にクリアしていく必要はなく、
相互に理解を深め合えるような内容です。
よく分からない部分にぶつかっても、どんどん先に進んでみましょう。
バトンタッチ
明日のエントリは@naghbIQtIqHomさんです。
よろしくお願い致します!