| Class | Mocha::AnyInstanceMethod |
| In: |
lib/mocha/any_instance_method.rb
|
| Parent: | ClassMethod |
# File lib/mocha/any_instance_method.rb, line 27
27: def define_new_method
28: stubbee.class_eval("def #{method}(*args, &block); self.class.any_instance.mocha.method_missing(:#{method}, *args, &block); end", __FILE__, __LINE__)
29: end
# File lib/mocha/any_instance_method.rb, line 17
17: def hide_original_method
18: if method_exists?(method)
19: begin
20: stubbee.class_eval("alias_method :#{hidden_method}, :#{method}", __FILE__, __LINE__)
21: rescue NameError
22: # deal with nasties like ActiveRecord::Associations::AssociationProxy
23: end
24: end
25: end
# File lib/mocha/any_instance_method.rb, line 45
45: def method_exists?(method)
46: existing_methods = []
47: existing_methods += stubbee.public_instance_methods(false)
48: existing_methods += stubbee.protected_instance_methods(false)
49: existing_methods += stubbee.private_instance_methods(false)
50: existing_methods.any? { |m| m.to_s == method.to_s }
51: end
# File lib/mocha/any_instance_method.rb, line 13
13: def mock
14: stubbee.any_instance.mocha
15: end
# File lib/mocha/any_instance_method.rb, line 31
31: def remove_new_method
32: stubbee.class_eval("remove_method :#{method}", __FILE__, __LINE__)
33: end
# File lib/mocha/any_instance_method.rb, line 35
35: def restore_original_method
36: if method_exists?(hidden_method)
37: begin
38: stubbee.class_eval("alias_method :#{method}, :#{hidden_method}; remove_method :#{hidden_method}", __FILE__, __LINE__)
39: rescue NameError
40: # deal with nasties like ActiveRecord::Associations::AssociationProxy
41: end
42: end
43: end