class RSpec::Mocks::AndYieldImplementation
Handles the implementation of an `and_yield` declaration. @private
Public Class Methods
new(args_to_yield, eval_context, error_generator)
click to toggle source
# File lib/rspec/mocks/message_expectation.rb, line 466 def initialize(args_to_yield, eval_context, error_generator) @args_to_yield = args_to_yield @eval_context = eval_context @error_generator = error_generator end
Public Instance Methods
arity()
click to toggle source
# File lib/rspec/mocks/message_expectation.rb, line 472 def arity -1 end
call(*args_to_ignore, &block)
click to toggle source
# File lib/rspec/mocks/message_expectation.rb, line 476 def call(*args_to_ignore, &block) return if @args_to_yield.empty? && @eval_context.nil? @error_generator.raise_missing_block_error @args_to_yield unless block value = nil @args_to_yield.each do |args| if block.arity > -1 && args.length != block.arity @error_generator.raise_wrong_arity_error args, block.arity end value = @eval_context ? @eval_context.instance_exec(*args, &block) : block.call(*args) end value end