Class: RSpec::Matchers::BuiltIn::YieldWithArgs Private
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
BaseMatcher
|
|
Instance Chain:
|
|
Inherits: |
RSpec::Matchers::BuiltIn::BaseMatcher
|
Defined in: | rspec-expectations/lib/rspec/matchers/built_in/yield.rb |
Overview
Provides the implementation for RSpec::Matchers#yield_with_args. Not intended to be instantiated directly.
Constant Summary
BaseMatcher
- Inherited
Class Method Summary
- .new(*args) ⇒ YieldWithArgs constructor Internal use only
BaseMatcher
- Inherited
.matcher_name, .new, | |
.underscore | Borrowed from ActiveSupport. |
Instance Attribute Summary
- #supports_block_expectations? ⇒ Boolean readonly Internal use only
- #supports_value_expectations? ⇒ Boolean readonly Internal use only
- #all_args_match? ⇒ Boolean readonly private Internal use only
- #args_currently_match? ⇒ Boolean readonly private Internal use only
BaseMatcher
- Inherited
#actual, | |
#diffable? |
|
#expected, #expects_call_stack_jump?, #matcher_name, #matcher_name=, #rescued_exception, | |
#supports_block_expectations? | Most matchers are value matchers (i.e. meant to work with ‘expect(value)`) rather than block matchers (i.e. meant to work with `expect { }`), so this defaults to false. |
#supports_value_expectations? |
BaseMatcher::StringEncodingFormatting
- Included
#string_encoding_differs? | :nocov: |
Instance Method Summary
- #description Internal use only
- #does_not_match?(block) ⇒ Boolean Internal use only
- #failure_message Internal use only
- #failure_message_when_negated Internal use only
- #matches?(block) ⇒ Boolean Internal use only
- #expected_arg_description private Internal use only
- #negative_failure_reason private Internal use only
- #positive_failure_reason private Internal use only
BaseMatcher
- Inherited
#actual_formatted, | |
#description | Generates a description using |
#expected_formatted, | |
#match_unless_raises | Used to wrap a block of code that will indicate failure by raising one of the named exceptions. |
#matches? | Indicates if the match is successful. |
BaseMatcher::DefaultFailureMessages
- Included
#failure_message | Provides a good generic failure message. |
#failure_message_when_negated | Provides a good generic negative failure message. |
BaseMatcher::StringEncodingFormatting
- Included
#format_encoding | Formats a String’s encoding as a human readable string :nocov: |
BaseMatcher::HashFormatting
- Included
#improve_hash_formatting | ‘{ |
::RSpec::Matchers::Composable
- Included
#& | Alias for Composable#and. |
#=== | Delegates to #matches?. |
#and | Creates a compound |
#description_of | Returns the description of the given object in a way that is aware of composed matchers. |
#or | Creates a compound |
#values_match? | This provides a generic way to fuzzy-match an expected value against an actual value. |
#| | Alias for Composable#or. |
#should_enumerate? | We should enumerate arrays as long as they are not recursive. |
#surface_descriptions_in | Transforms the given data structure (typically a hash or array) into a new data structure that, when |
#unreadable_io?, | |
#with_matchers_cloned | Historically, a single matcher instance was only checked against a single value. |
Instance Attribute Details
#all_args_match? ⇒ Boolean
(readonly, private)
# File 'rspec-expectations/lib/rspec/matchers/built_in/yield.rb', line 288
def all_args_match? values_match?(@expected, @actual) end
#args_currently_match? ⇒ Boolean
(readonly, private)
# File 'rspec-expectations/lib/rspec/matchers/built_in/yield.rb', line 273
def args_currently_match? if @expected.empty? # expect {...}.to yield_with_args @positive_args_failure = 'yielded with no arguments' if @actual.empty? return !@actual.empty? end unless (match = all_args_match?) @positive_args_failure = 'yielded with unexpected arguments' \ "\nexpected: #{surface_descriptions_in(@expected).inspect}" \ "\n got: #{@actual_formatted}" end match end
#supports_block_expectations? ⇒ Boolean
(readonly)
# File 'rspec-expectations/lib/rspec/matchers/built_in/yield.rb', line 240
def supports_block_expectations? true end
#supports_value_expectations? ⇒ Boolean
(readonly)
# File 'rspec-expectations/lib/rspec/matchers/built_in/yield.rb', line 245
def supports_value_expectations? false end
Instance Method Details
#description
[ GitHub ]# File 'rspec-expectations/lib/rspec/matchers/built_in/yield.rb', line 233
def description desc = 'yield with args' desc = "#{desc}(#{expected_arg_description})" unless @expected.empty? desc end
#does_not_match?(block) ⇒ Boolean
# File 'rspec-expectations/lib/rspec/matchers/built_in/yield.rb', line 218
def does_not_match?(block) !matches?(block) && @probe.has_block? end
#expected_arg_description (private)
[ GitHub ]# File 'rspec-expectations/lib/rspec/matchers/built_in/yield.rb', line 257
def expected_arg_description @expected.map { |e| description_of e }.join(', ') end
#failure_message
[ GitHub ]# File 'rspec-expectations/lib/rspec/matchers/built_in/yield.rb', line 223
def "expected given block to yield with arguments, but #{positive_failure_reason}" end
#failure_message_when_negated
[ GitHub ]# File 'rspec-expectations/lib/rspec/matchers/built_in/yield.rb', line 228
def "expected given block not to yield with arguments, but #{negative_failure_reason}" end
#matches?(block) ⇒ Boolean
# File 'rspec-expectations/lib/rspec/matchers/built_in/yield.rb', line 205
def matches?(block) @args_matched_when_yielded = true @probe = YieldProbe.new(block) do @actual = @probe.single_yield_args @actual_formatted = actual_formatted @args_matched_when_yielded &&= args_currently_match? end return false unless @probe.has_block? @probe.probe @probe.yielded_once?(:yield_with_args) && @args_matched_when_yielded end
#negative_failure_reason (private)
[ GitHub ]# File 'rspec-expectations/lib/rspec/matchers/built_in/yield.rb', line 261
def negative_failure_reason if !@probe.has_block? 'was not a block' elsif @args_matched_when_yielded && !@expected.empty? 'yielded with expected arguments' \ "\nexpected not: #{surface_descriptions_in(@expected).inspect}" \ "\n got: #{@actual_formatted}" else 'did' end end
#positive_failure_reason (private)
[ GitHub ]# File 'rspec-expectations/lib/rspec/matchers/built_in/yield.rb', line 251
def positive_failure_reason return 'was not a block' unless @probe.has_block? return 'did not yield' if @probe.num_yields.zero? @positive_args_failure end