メインコンテンツまでスキップ

match マッチャー

match マッチャーはオブジェクトの #match を呼び出し、#match が真偽値(falsenil 以外)を返す場合にパスします。RegexpString の両方には #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" にマッチすることを期待します |