Sha256: 75e7a57c64057658a1775529e9df088f20c9146a1fcf000664dbce510e7450e4
Contents?: true
Size: 1.54 KB
Versions: 1
Compression:
Stored size: 1.54 KB
Contents
module RR module MethodDispatches class MethodMissingDispatch < BaseMethodDispatch class << self def original_method_missing_alias_name "__rr__original_method_missing" end end attr_reader :subject, :method_name def initialize(subject, method_name, args, block) @subject, @method_name, @args, @block = subject, method_name, args, block end def call if Injections::DoubleInjection.exists?(subject, method_name) space.record_call(subject, method_name, args, block) @double = find_double_to_attempt if double double.method_call(args) call_yields return_value = extract_subject_from_return_value(call_implementation) if after_call_proc extract_subject_from_return_value(after_call_proc.call(return_value)) else return_value end else double_not_found_error end else call_original_method end end def call_original_method double_injection.bypass_bound_method do call_original_method_missing end end protected def call_implementation if implementation_is_original_method? call_original_method else nil end end def double_injection Injections::DoubleInjection.create(subject, method_name) end def_delegators 'self.class', :original_method_missing_alias_name end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rr-0.10.11 | lib/rr/method_dispatches/method_missing_dispatch.rb |