Class: Facon::Proxy
- Extended by:
- Forwardable
- Defined in:
- lib/facon/proxy.rb
Overview
A proxy for mock objects. Stubs and expectations are set on this proxy.
Instance Method Summary collapse
- #add_expectation(expected_from, method, &block) ⇒ Object
- #add_negative_expectation(expected_from, method, &block) ⇒ Object
- #add_stub(expected_from, method) ⇒ Object
-
#initialize(target, name) ⇒ Proxy
constructor
A new instance of Proxy.
- #message_received(method, *args, &block) ⇒ Object
- #reset ⇒ Object
- #verify ⇒ Object
Constructor Details
#initialize(target, name) ⇒ Proxy
Returns a new instance of Proxy.
9 10 11 12 13 14 15 16 |
# File 'lib/facon/proxy.rb', line 9 def initialize(target, name) @target, @name = target, name @expectations = [] @stubs = [] @proxied_methods = [] @error_generator = ErrorGenerator.new(target, name) @expectation_ordering = nil unless defined?(@expectation_ordering) end |
Instance Method Details
#add_expectation(expected_from, method, &block) ⇒ Object
26 27 28 29 30 31 |
# File 'lib/facon/proxy.rb', line 26 def add_expectation(expected_from, method, &block) add_method(method) @expectations << Expectation.new(@error_generator, @expectation_ordering, expected_from, method, (block_given? ? block : nil), 1) @expectations.last end |
#add_negative_expectation(expected_from, method, &block) ⇒ Object
33 34 35 36 37 38 |
# File 'lib/facon/proxy.rb', line 33 def add_negative_expectation(expected_from, method, &block) add_method(method) @expectations << NegativeExpectation.new(@error_generator, @expectation_ordering, expected_from, method, (block_given? ? block : nil)) @expectations.last end |
#add_stub(expected_from, method) ⇒ Object
18 19 20 21 22 23 24 |
# File 'lib/facon/proxy.rb', line 18 def add_stub(expected_from, method) add_method(method) # A stub is really an expectation that can be called any number of times. @stubs.unshift(Expectation.new(@error_generator, @expectation_ordering, expected_from, method, nil, :any)) @stubs.first end |
#message_received(method, *args, &block) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/facon/proxy.rb', line 40 def (method, *args, &block) if expectation = find_matching_expectation(method, *args) expectation.invoke(args, block) elsif stub = find_matching_method_stub(method, *args) stub.invoke([], block) elsif expectation = find_almost_matching_expectation(method, *args) (expectation, *args) unless has_negative_expectation?(method) else @target.send(:method_missing, method, *args, &block) end end |
#reset ⇒ Object
58 59 60 61 62 63 |
# File 'lib/facon/proxy.rb', line 58 def reset @expectations.clear @stubs.clear reset_proxied_methods @proxied_methods.clear end |
#verify ⇒ Object
52 53 54 55 56 |
# File 'lib/facon/proxy.rb', line 52 def verify @expectations.each { |expectation| expectation.met? } ensure reset end |