追記2(2015/09/08)ありがたいことに、未だにこの記事をブックマークしてくださる方がいらっしゃいますが、2008年に書いた記事なのでご注意下さい。内容はアップデートしていません。私自身はすでにRubyを使っていません。
追記:古い情報ですので、記事の日付とお使いのRSpecのバージョンを見比べて、参考程度にご覧ください。大部分は通用するはずですが。
Matcherをいちいち調べるのが面倒になって、公式のリファレンスマニュアルは一覧性が低いから、自分で一覧表を作った。
RSpecそのものについては、スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編)などをどうぞ。そのうちRSpec on Rails版も作る予定。
| 名前 | not((should_notで使えるかどうかという意味。)) |
意味・機能 |
|---|---|---|
== |
○ | ==演算子を利用して比較する。ex.)"foo".should == "foo"。 |
be_true |
○ | 真偽値(真) |
be_false |
○ | 真偽値(偽) |
be_nil |
○ | nil? が真 |
be_empty |
○ | Array#empty? が真 |
be_述語(*args) |
○ | be_emptyの一般形。述語メソッドの?を除いた部分を指定して、それがtrueを返す |
be_an_instance_of(Class) |
○ | obj.instance_of?(Class)がtrue |
be_a_kind_of(Class) |
○ | obj.kind_of?(Class)がtrue |
have_key(key) |
○ | obj.has_key?(key)がtrue |
be_close(E,D) |
○ | 数値データが、E±Dの範囲に収まっている |
change(obj,msg,&blk) |
○ | Procオブジェクトが、ブロックの値を変化させる |
eql(expected) |
○ | eql?で比較して等しい |
equal(expected) |
○ | equal?で比較して等しい |
have(n).name |
○ | コレクションオブジェクトが、n個の要素を持っている(nameの部分は任意。itemsとかにすると、英語として自然っぽい)。 |
have_exactly(n).name |
× | have(n)と同じ |
have_at_least(n).name |
× | コレクションオブジェクトが、少なくともn個の要素を持っている |
have_at_most(n).name |
× | コレクションオブジェクトが、多くてもn個までの要素を持っている |
include(expected) |
○ | コレクションオブジェクトが、expectedを要素として持っている |
match(regexp) |
○ | 正規表現regexpにマッチする |
raise_error() |
○ | Procオブジェクトが例外を発生する |
raise_error(error) |
○ | Procオブジェクトが例外errorを発生する |
raise_error(error,msg) |
○ | Procオブジェクトが例外errorを、文字列msgで発生する |
raise_error(error,regexp) |
○ | Procオブジェクトが例外errorを、regexpにマッチする文字列で発生する |
respond_to(*args) |
○ | オブジェクトが、指定されたメソッドを全て持つ |
satisfy {|e| ...} |
○ | オブジェクトが、ブロックを真にする(ブロックの引数としてオブジェクト自身が渡される) |
thorw_symbol(sym=nil) |
○ | symがthrowされる |