『Everyday Rails - RSpecによるRailsテスト入門』
が、RSpec3に対応したとの噂を聞いて1年ぶりに読み直しました。この書籍は著者や訳者さんが、しっかりとアップデートを続けてくれているので、最新の入門チュートリアル
としてRSpecの実践的な使い方が習得できるすばらしい本です。
今回は『Everyday Rails - RSpecによるRailsテスト入門』
を読んでいく中で、特に印象に残った部分を中心にピックアップしていきます。ブログ駆動勉強ですw
🍣 Everyday Railsのサンプルソース
everydayrails/rspec_rails_4 - GitHub
この書籍ではできるだけRSpecやテストに集中できるようにサンプルソースが用意されています。しかもRails 4対応と至れり尽くせりです。すばらしい!
ターミナルで次のコマンドを実行すると、ローカルにソースコードをダウンロードできます。
git clone https://github.com/everydayrails/rspec_rails_4.git |
🎳 自分でコードを書く
勉強をするときにコピー&ペーストをするのではなく、自分でコードをタイピングしていくべき。
これは最近学習によって得られる知識がかなり変わることを実感しているのですごく共感できます!
🏈 テスト設計について
TDDで動くコードを書く前にRSpecのexample(itで始まる行)まで書いてテスト設計する。
いつもテストが先か、コードが先かで悩んでいました。この理由のひとつは動かない状態のテストの設計をどこに
書くかでしたが、この本を読んでいく中でこういうふうに先に設計すればTDDの流れの中で開発できるんだと感激ました^^
🚕 絶対に覚えておきたいRSpecを書くときの基本
* Specアウトラインをベースに考える * example(itで始まる行)は原因究明しやすいように結果を1つに絞る * 期待する結果は能動形、具体的に記述すること * 「起きてほしいこと、起きてほしくないこと」の両方のテストを書くこと * 境界値テストをすること * スペックの可読性を高めることに努めること
😎 コントローラスペックについて
feature specに比べてコントローラスペックのほうが、少ないコストでテストできる。
コントローラのテストは、自動生成されていないコードで、テストにコストをかけて効果が高そうなものを選定するといい。
その結果たしっかりテストされたコントローラがあれば、アプリケーション全体のテスト網羅率を向上させることができる。
🐠 FactoryGirlのテクニック
次のようにファクトリを書くことで、home_phone
とwork_phone
を使わけることができます。
FactoryGirl.define do |
また、『stympy/faker』を使うと、
住所やURL、メールアドレスなどのリアルなダミーデータを生成してくれます。
ただ日本語のふりがななどに対応しようと思うと『willnet/gimei』
がオススメです。日本語のリアルな住所を組み合わせたダミーデータも簡単に作成することができます。
FactoryGirlはテストを遅くすることがあるそうですので、必要なときに適切に使うことが重要とのことです。
🐯 shared_examples
shared_exmamples
とは、いくつかのテストをグループ化して、メソッドのように何度も呼び出せる機能です。
下は公式サンプルのテストですが、これを見ると一目で分かると思います!
require "set" |
🎉 FactoryGirlでローカルのファイルを指定する方法
# ローカルのファイルを指定する方法 |
🚌 RSpecの便利マッチャー
# 正規表現でのチェック |
😸 テストで特定の時間を指定する方法
travisjeffery/timecop - GitHub
特定の曜日や日にちに依存する処理がある場合に、そのテストをできる。また、時間をやめることができるのでタイムスタンプが正しく動いているかのテストなどができる。
🐮 メールのテスト
EmailについてテストをするためのGem。知らなかったけどこれはすごい使えそう。今度試してみます!
🏀 RSpec 3初心者向けの資料まとめ
ちなみにそのほかのTDDやRSpecの入門記事も書いています。こちらも良ければぜひ読んでみてください^^
🐡 変更来歴
(2015-01-12 22:30) 既存記事から分離して新規作成