Class: SimpleMock::MockDelegator

Inherits:
SimpleDelegator
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/simple_mock/mock_delegator.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(object) ⇒ MockDelegator

Returns a new instance of MockDelegator.



9
10
11
12
# File 'lib/simple_mock/mock_delegator.rb', line 9

def initialize object
  super
  self.__tracer = Tracer.new
end

Instance Attribute Details

#__tracerObject

Returns the value of attribute __tracer.



5
6
7
# File 'lib/simple_mock/mock_delegator.rb', line 5

def __tracer
  @__tracer
end

Instance Method Details

#expect(name, retval, args = []) ⇒ Object

Expect that method name is called, optionally with args, and returns retval.

mock.expect :meaning_of_life, 42
mock.meaning_of_life # => 42

mock.expect :do_something_with, true, [some_obj, true]
mock.do_something_with some_obj, true # => true

args is compared to the expected args using case equality (ie, the ‘===’ method), allowing for less specific expectations.

mock.expect :uses_any_string, true, [String]
mock.uses_any_string 'foo' # => true
mock.verify  # => true

mock.expect :uses_one_string, true, ['foo']
mock.uses_one_string 'bar' # => true
mock.verify  # => raises MockExpectationError


33
34
35
36
37
38
39
40
41
42
43
# File 'lib/simple_mock/mock_delegator.rb', line 33

def expect name, retval, args = []
  method_definition = Module.new do
    define_method name do |*args, &block|
      __tracer.assert name, args
      retval
    end
  end
  extend method_definition
  __tracer.register name, args
  self
end