Class: Wiretap

Inherits:
Object
  • Object
show all
Defined in:
lib/test_wiretap.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(obj, method_name, params = {}) ⇒ Wiretap

Returns a new instance of Wiretap.



4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/test_wiretap.rb', line 4

def initialize(obj, method_name, params={})
  self.reset

  @pre_method = params[:pre_method]
  @real_method = params[:method] || obj.method(method_name)
  @post_method = params[:post_method]

  wt_obj = self
  obj.send(:define_singleton_method, method_name) do |*arguments|
    wt_obj.inspector(arguments)
  end
end

Instance Attribute Details

#argumentsObject

Returns the value of attribute arguments.



2
3
4
# File 'lib/test_wiretap.rb', line 2

def arguments
  @arguments
end

#calledObject

Returns the value of attribute called.



2
3
4
# File 'lib/test_wiretap.rb', line 2

def called
  @called
end

#return_valueObject

Returns the value of attribute return_value.



2
3
4
# File 'lib/test_wiretap.rb', line 2

def return_value
  @return_value
end

Instance Method Details

#inspector(args) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/test_wiretap.rb', line 17

def inspector(args)
  @called += 1
  @arguments.push(args)
  @pre_method.call if @pre_method
  rv = @real_method.call(*args)
  @return_value.push(rv)
  @post_method.call if @post_method
  rv
end

#resetObject



27
28
29
30
31
# File 'lib/test_wiretap.rb', line 27

def reset
  @called = 0
  @arguments = []
  @return_value = []
end