Module: RSpec::Expectations
- Defined in:
- lib/rspec/expectations.rb,
lib/rspec/expectations/differ.rb,
lib/rspec/expectations/errors.rb,
lib/rspec/expectations/syntax.rb,
lib/rspec/expectations/handler.rb,
lib/rspec/expectations/version.rb,
lib/rspec/expectations/fail_with.rb,
lib/rspec/expectations/extensions/object.rb,
lib/rspec/expectations/expectation_target.rb
Overview
RSpec::Expectations adds two instance methods to every object:
should(matcher=nil)
should_not(matcher=nil)
Both methods take an optional matcher object (See
RSpec::Matchers). When should
is invoked with a
matcher, it turns around and calls matcher.matches?(self)
. For example,
in the expression:
order.total.should eq(Money.new(5.55, :USD))
the should
method invokes the equivalent of eq.matches?(order.total)
. If
matches?
returns true, the expectation is met and execution continues. If
false
, then the spec fails with the message returned by
eq.failure_message_for_should
.
Given the expression:
order.entries.should_not include(entry)
the should_not
method invokes the equivalent of
include.matches?(order.entries)
, but it interprets false
as success, and
true
as a failure, using the message generated by
eq.failure_message_for_should_not
.
rspec-expectations ships with a standard set of useful matchers, and writing your own matchers is quite simple.
See RSpec::Matchers for more information about the built-in matchers that ship with rspec-expectations, and how to write your own custom matchers.
Defined Under Namespace
Modules: DeprecatedConstants, Syntax Classes: Differ, ExpectationHandler, ExpectationNotMetError, ExpectationTarget, NegativeExpectationHandler, PositiveExpectationHandler
Class Method Summary collapse
-
.fail_with(message, expected = nil, actual = nil) ⇒ Object
Raises an RSpec::Expectations::ExpectationNotMetError with message.
Instance Method Summary collapse
-
#differ=(ignore) ⇒ Object
deprecated
Deprecated.
(no replacement)
Class Method Details
.fail_with(message, expected = nil, actual = nil) ⇒ Object
Raises an RSpec::Expectations::ExpectationNotMetError with message.
Adds a diff to the failure message when expected
and actual
are
both present.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/rspec/expectations/fail_with.rb', line 16 def fail_with(, expected=nil, actual=nil) if ! raise ArgumentError, "Failure message is nil. Does your matcher define the " + "appropriate failure_message_for_* method to return a string?" end if actual && expected if all_strings?(actual, expected) if any_multiline_strings?(actual, expected) expected = expected.join(',') if Array === expected << "\nDiff:" << differ.diff_as_string(actual, expected) end elsif no_procs?(actual, expected) && no_numbers?(actual, expected) << "\nDiff:" << differ.diff_as_object(actual, expected) end end raise(RSpec::Expectations::ExpectationNotMetError.new()) end |