The expectation director is responsible for routing calls to the correct expectations for a given argument list.
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
Append an expectation to this director.
# File lib/flexmock/expectation_director.rb, line 47 def <<(expectation) @expectations << expectation end
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( "no matching handler found for " + FlexMock.format_call(@sym, args)) { ! exp.nil? } exp.verify_call(*args) end
# File lib/flexmock/expectation_director.rb, line 82 def find_expectation_in(expectations, *args) expectations.find { |e| e.match_args(args) && e.eligible? } || expectations.find { |e| e.match_args(args) } end