match
マッチャー
match
マッチャーはオブジェクトの #match
を呼び出し、#match
が真偽値(false
や nil
以外)を返す場合にパスします。Regexp
と String
の両方には #match
メソッドが提供されています。
(expect("a string").to match(/str/) # passes
expect("a string").to match(/foo/) # fails
expect(/foo/).to match("food") # passes
expect(/foo/).to match("drinks") # fails
また、このマッチャーを使用して、マッチャーを組み合わせる際にネストしたデータ構造にマッチさせることもできます。
文字列の使用方法
次の内容で "string_match_spec.rb" という名前のファイルがあるとします:
RSpec.describe "a string" do
it { is_expected.to match(/str/) }
it { is_expected.not_to match(/foo/) }
# deliberate failures
it { is_expected.not_to match(/str/) }
it { is_expected.to match(/foo/) }
end
rspec string_match_spec.rb
を実行すると、
以下のすべてが出力に含まれるはずです:
| 4 つの例、2 つの失敗 | | "a string" が /str/ にマッチしないことを期待します | | "a string" が /foo/ にマッチすることを期待します |
正規表現の使用方法
次の内容で "regexp_match_spec.rb" という名前のファイルがあるとします:
RSpec.describe /foo/ do
it { is_expected.to match("food") }
it { is_expected.not_to match("drinks") }
# deliberate failures
it { is_expected.not_to match("food") }
it { is_expected.to match("drinks") }
end
rspec regexp_match_spec.rb
を実行すると、
以下のすべてが出力に含まれるはずです:
| 4 つの例、2 つの失敗 | | /foo/ が "food" にマッチしないことを期待します | | /foo/ が "drinks" にマッチすることを期待します |