本当は怖い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) symthrowされる
【広告】