JanGaJan.com

Is fun? JOY!

Rspecメモ

rspecの学習中です。

rspecのワークショップ

以下のチュートリアルでrspecの学習をした時のメモです。

http://d.hatena.ne.jp/t-wada/20100228/p1
http://qiita.com/jnchito/items/624f6d5023c279046a1c

describeとcontextとit

  • describeは対象を説明
  • contextは状況を説明
  • itは試験内容を説明
  • it内に具体的な試験を記述
  • itの引数の説明を省略しても試験内容をrspecが判断して仕様記述を組み立てる
  • 読みやすさ次第でitの文字列引数を使うことを推奨
  • 内容を確認したい時は、rspec -fd specfile

beforeにテスト実行前処理を記述

  • beforeの引数のデフォルトは:each

subjectでブロックの評価結果がit内のshouldのレシーバになる

  • 明示的にit内でsubjectメソッドを利用することで、subjectブロックの評価結果を使うことができる

shared_examplesit_behaves_like

  • shared_examples_for 'キー名' do ~ endとするとブロック内の処理をit_should_behave_like 'キー名'で呼び出してテストできる
  • ただし、キー名は全てのテストで重複しないように注意する

predicateマッチャ

  • expect(xxx).to eq false -> expect(xxx).not_to be_empty

rspec3で標準から外れた機能

  • itsメソッドはrspec-its gemで提供
  • have マッチャ
    • サイズのチェックをテストしやすくするマッチャ(ただし、rspec3ではgemに外出しされた)
    • have マッチャを使った場合、 have(n).itemhave(n).items は互いに置換可能
      • nの値により自然な形にするのがいい
    • have(n).named_collection記法でもかける
      • it {is_expected.to have(n).xxx }

Comments