RSpecの標準Matcher一覧表
追記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 される |