class FlexMock::ExpectationDirector
The expectation director is responsible for routing calls to the correct expectations for a given argument list.
Public Class Methods
new(sym)
click to toggle source
Create an ExpectationDirector for a mock object.
# File lib/flexmock/expectation_director.rb, line 23 def initialize(sym) @sym = sym @expectations = [] @defaults = [] @expected_order = nil end
Public Instance Methods
<<(expectation)
click to toggle source
Append an expectation to this director.
# File lib/flexmock/expectation_director.rb, line 50 def <<(expectation) @expectations << expectation end
call(args, call_record=nil)
click to toggle source
Invoke the expectations for a given set of arguments.
First, look for an expectation that matches the arguments and is eligible to be called. Failing that, look for a expectation that matches the arguments (at this point it will be ineligible, but at least we will get a good failure message). Finally, check for expectations that don't have any argument matching criteria.
# File lib/flexmock/expectation_director.rb, line 38 def call(args, call_record=nil) exp = find_expectation(*args) call_record.expectation = exp if call_record FlexMock.check( proc { "no matching handler found for " + FlexMock.format_call(@sym, args) } ) { !exp.nil? } returned_value = exp.verify_call(*args) returned_value end
Private Instance Methods
find_expectation_in(expectations, *args)
click to toggle source
# File lib/flexmock/expectation_director.rb, line 85 def find_expectation_in(expectations, *args) expectations.find { |e| e.match_args(args) && e.eligible? } || expectations.find { |e| e.match_args(args) } end