@@ -5,6 +5,7 @@ module Spy
55 # original class it will raise an error.
66 module Mock
77 CLASSES_NOT_TO_OVERRIDE = [ Enumerable , Numeric , Comparable , Class , Module , Object ]
8+ METHODS_NOT_TO_OVERRIDE = [ :initialize , :method ]
89
910 def initialize
1011 end
@@ -57,8 +58,10 @@ def new(klass)
5758 def included ( mod )
5859 method_classes = classes_to_override_methods ( mod )
5960
61+ mocked_methods = [ ]
6062 [ :public , :protected , :private ] . each do |visibility |
6163 get_inherited_methods ( method_classes , visibility ) . each do |method_name |
64+ mocked_methods << method_name
6265 args = args_for_method ( mod . instance_method ( method_name ) )
6366
6467 mod . class_eval <<-DEF_METHOD , __FILE__ , __LINE__ +1
@@ -70,6 +73,10 @@ def #{method_name}(#{args})
7073 DEF_METHOD
7174 end
7275 end
76+
77+ mod . define_singleton_method ( :mocked_methods ) do
78+ mocked_methods
79+ end
7380 end
7481
7582 private
@@ -86,11 +93,12 @@ def classes_to_override_methods(mod)
8693 end
8794
8895 def get_inherited_methods ( klass_ancestors , visibility )
89- get_methods_method = "#{ visibility } _instance_methods" . to_sym
90- instance_methods = klass_ancestors . map ( &get_methods_method )
96+ instance_methods = klass_ancestors . map do |klass |
97+ klass . send ( "#{ visibility } _instance_methods" . to_sym , false )
98+ end
9199 instance_methods . flatten!
92100 instance_methods . uniq!
93- instance_methods - Object . send ( get_methods_method )
101+ instance_methods - METHODS_NOT_TO_OVERRIDE
94102 end
95103
96104 def args_for_method ( method )
0 commit comments