RSpec
エンジニアのためのWebチートシート
RSpecとはRubyで実装されたBDD(behavior driven development)のためのテスティングフレームワークです。自然言語のような読み書きのしやすさが特徴です。 RSpecの基本的な書き方、テストコードのDRY化のための仕組み、マッチャなどをチートシートにまとめてみました。
導入
Railsの場合
1. gemのインストール
2. bundle install
3. RSpecに最小限必要なファイルをRailsにインストール
Railsを使用しない場合
1. 作業ディレクトリの作成
2. bundlerを初期化
3. gemのインストール
4. RSpecの初期化
RSpecの基本
基本形
describeはテスト対象をグループ化します。 itはテストをexampleという単位にひとまとめにし、itの内部で実行されたテストコードが全てパスした場合に成功とみなされます。 itの中身はテストの本体です。テスト対象の処理と結果を様々なマッチャを使用して比較します。ここでは、'1 + 1' という処理を 'to eq' というマッチャを使用して '2' と等しいかテストしています。
describe/it/expect
describe
describeはテスト対象をグループ化します。 下記のようにテスト対象の構造をdescribeをネストすることで表現することができます。
it
itはテストをexampleという単位にひとまとめにし、itの内部で実行されたテストコードが全てパスした場合に成功とみなされます。 実際にテストを実行した時には下記のように表示されるはずです。
expect
'expect' はエクスペクテーションです。 '1 + 1' が '2' と 'to eq'(等しくなること)を期待するという意味です。
context/before/let
context
'context' はテストの条件を分岐する時に使用します。 上のテストでは、Productクラスの 'low_price?' というメソッドを'low_price'の時、'high_price'の時という二つの条件でテストしています。
before
'before' で 'describe' や 'context' 内の共通処理をまとめてコードをDRYに保つことができます。
let
'let' を用いることで遅延評価(変数が必要になるまで呼び出されない)することができます。