class RSpec::Mocks::MessageChain

@private

Attributes

Public Class Methods

# File rspec-mocks/lib/rspec/mocks/message_chain.rb, line 7
def initialize(object, *chain, &blk)
  @object = object
  @chain, @block = format_chain(*chain, &blk)
end

Public Instance Methods

@api private

# File rspec-mocks/lib/rspec/mocks/message_chain.rb, line 13
def setup_chain
  if chain.length > 1
    if (matching_stub = find_matching_stub)
      chain.shift
      chain_on(matching_stub.invoke(nil), *chain, &@block)
    elsif (matching_expectation = find_matching_expectation)
      chain.shift
      chain_on(matching_expectation.invoke_without_incrementing_received_count(nil), *chain, &@block)
    else
      next_in_chain = Double.new
      expectation(object, chain.shift) { next_in_chain }
      chain_on(next_in_chain, *chain, &@block)
    end
  else
    expectation(object, chain.shift, &@block)
  end
end