Class: Stubba::AnyInstanceMethod

Inherits:
ClassMethod show all
Defined in:
lib/stubba/any_instance_method.rb

Instance Attribute Summary

Attributes inherited from ClassMethod

#method, #stubbee

Instance Method Summary collapse

Methods inherited from ClassMethod

#cannot_replace_method_error, #eql?, #hidden_method, #initialize, #stub, #to_s

Constructor Details

This class inherits a constructor from Stubba::ClassMethod

Instance Method Details

#define_new_methodObject



21
22
23
# File 'lib/stubba/any_instance_method.rb', line 21

def define_new_method
  stubbee.class_eval "def #{method}(*args, &block); self.class.any_instance.mocha.method_missing(:#{method}, *args, &block); end"
end

#hide_original_methodObject



17
18
19
# File 'lib/stubba/any_instance_method.rb', line 17

def hide_original_method
  stubbee.class_eval "alias_method :#{hidden_method}, :#{method}" if stubbee.method_defined?(method)
end

#mockObject



13
14
15
# File 'lib/stubba/any_instance_method.rb', line 13

def mock
  stubbee.any_instance.mocha
end

#remove_new_methodObject



25
26
27
# File 'lib/stubba/any_instance_method.rb', line 25

def remove_new_method
  stubbee.class_eval "remove_method :#{method}"
end

#restore_original_methodObject



29
30
31
# File 'lib/stubba/any_instance_method.rb', line 29

def restore_original_method
  stubbee.class_eval "alias_method :#{method}, :#{hidden_method}; remove_method :#{hidden_method}" if stubbee.method_defined?(hidden_method)
end

#unstubObject



7
8
9
10
11
# File 'lib/stubba/any_instance_method.rb', line 7

def unstub
  remove_new_method
  restore_original_method
  stubbee.any_instance.reset_mocha
end