本当は怖いHPC

HPC屋の外部記憶装置。メモ書き。ちゃんとしたものは別のところに書く予定です

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される