actual (実際に状態を確認する対象)で使用可能なメソッドを呼び出して、成否を判断する。 Matcher に使用するメソッドと、actual で呼び出されるメソッドは以下のように関係づけられる。
Matcher: be_〜 → actual で呼び出すメソッド: 〜?
例えば、be_nil という名前の Matcher を指定すると、actual で呼び出す nil? を使用して判断する。 より英語として読みやすいように、be_〜、be_a_〜、be_an_〜 という指定の仕方が出来る。 (例えば be_an_instance_of(Klass) → instance_of?(Klass) という指定が可能)
定義場所:
lib/spec/matchers/be.rb # be_true(), be_false, be_nil, be など lib/spec/matchers/be_close.rb # be_close lib/spec/matchers/be_instance_of.rb # be_(an_)?instance_of lib/spec/matchers/be_kind_of.rb # be_(a_)?kind_of lib/spec/matchers/method_missing.rb # ここ経由で Spec::Matcher::BePredicate (be.rb) から他の be_〜 形式が呼び出される。
Matcher: have_〜 → actual で呼び出すメソッド: has_〜?
be_〜 と同様に名前を読み替えて、呼び出すメソッドで確認する。
Matcher: ==, <, >, <=, >=, ===, =~
lib/spec/matchers/be.rb で定義している Spec::Matcher::BeComparedTo を使用して、 それぞれ定義されているメソッドを使用して expected と比較する。!= は使用不可(should_not == expected を使う)。
参照先
gem server 実行後の RDoc 参照先