Module: RSpec::Expectations

Defined in:
lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-expectations-3.12.2/lib/rspec/expectations.rb,
lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-expectations-3.12.2/lib/rspec/expectations/syntax.rb,
lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-expectations-3.12.2/lib/rspec/expectations/handler.rb,
lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-expectations-3.12.2/lib/rspec/expectations/version.rb,
lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-expectations-3.12.2/lib/rspec/expectations/fail_with.rb,
lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-expectations-3.12.2/lib/rspec/expectations/configuration.rb,
lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-expectations-3.12.2/lib/rspec/expectations/expectation_target.rb,
lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-expectations-3.12.2/lib/rspec/expectations/failure_aggregator.rb,
lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-expectations-3.12.2/lib/rspec/expectations/minitest_integration.rb,
lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-expectations-3.12.2/lib/rspec/expectations/block_snippet_extractor.rb

Overview

RSpec::Expectations provides a simple, readable API to express the expected outcomes in a code example. To express an expected outcome, wrap an object or block in ‘expect`, call `to` or `to_not` (aliased as `not_to`) and pass it a matcher object:

expect(order.total).to eq(Money.new(5.55, :USD))
expect(list).to include(user)
expect(message).not_to match(/foo/)
expect { do_something }.to raise_error

The last form (the block form) is needed to match against ruby constructs that are not objects, but can only be observed when executing a block of code. This includes raising errors, throwing symbols, yielding, and changing values.

When ‘expect(…).to` is invoked with a matcher, it turns around and calls `matcher.matches?(<object wrapped by expect>)`. For example, in the expression:

expect(order.total).to eq(Money.new(5.55, :USD))

…‘eq(Money.new(5.55, :USD))` returns a matcher object, and it results in 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`.

Given the expression:

expect(order.entries).not_to include(entry)

…the ‘not_to` method (also available as `to_not`) invokes the equivalent of `include.matches?(order.entries)`, but it interprets `false` as success, and `true` as a failure, using the message generated by `include.failure_message_when_negated`.

rspec-expectations ships with a standard set of useful matchers, and writing your own matchers is quite simple.

See [RSpec::Matchers](../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: ExpectationHelper, Syntax, Version Classes: BlockExpectationTarget, BlockSnippetExtractor, Configuration, Differ, ExpectationNotMetError, ExpectationTarget, FailureAggregator, LegacyMatcherAdapter, MultipleExpectationsNotMetError, NegativeExpectationHandler, PositiveExpectationHandler, ValueExpectationTarget

Constant Summary collapse

LegacyMacherAdapter =
Deprecated.

Use LegacyMatcherAdapter instead.

RSpec 3.0 was released with the class name misspelled. For SemVer compatibility, we will provide this misspelled alias until 4.0.

LegacyMatcherAdapter

Class Method Summary collapse

Class Method Details

.configurationRSpec::Expectations::Configuration

The configuration object.

Returns:



223
224
225
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-expectations-3.12.2/lib/rspec/expectations/configuration.rb', line 223

def self.configuration
  @configuration ||= Configuration.new
end

.differObject



13
14
15
16
17
18
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-expectations-3.12.2/lib/rspec/expectations/fail_with.rb', line 13

def differ
  RSpec::Support::Differ.new(
    :object_preparer => Differ::OBJECT_PREPARER,
    :color => RSpec::Matchers.configuration.color?
  )
end

.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.

Parameters:

  • message (String)
  • expected (Object) (defaults to: nil)
  • actual (Object) (defaults to: nil)


27
28
29
30
31
32
33
34
35
36
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-expectations-3.12.2/lib/rspec/expectations/fail_with.rb', line 27

def fail_with(message, expected=nil, actual=nil)
  unless message
    raise ArgumentError, "Failure message is nil. Does your matcher define the " \
                         "appropriate failure_message[_when_negated] method to return a string?"
  end

  message = ::RSpec::Matchers::ExpectedsForMultipleDiffs.from(expected).message_with_diff(message, differ, actual)

  RSpec::Support.notify_failure(RSpec::Expectations::ExpectationNotMetError.new message)
end