match
matcher
The match
matcher calls #match
on the object, passing if #match
returns a truthy (not
false
or nil
) value. Regexp
and String
both provide a #match
method.
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
You can also use this matcher to match nested data structures when composing matchers.
String usage
Given a file named "string_match_spec.rb" with:
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
When I run rspec string_match_spec.rb
Then the output should contain all of these:
| 4 examples, 2 failures | | expected "a string" not to match /str/ | | expected "a string" to match /foo/ |
Regular expression usage
Given a file named "regexp_match_spec.rb" with:
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
When I run rspec regexp_match_spec.rb
Then the output should contain all of these:
| 4 examples, 2 failures | | expected /foo/ not to match "food" | | expected /foo/ to match "drinks" |