@@ -55,21 +55,14 @@ def new(klass)
5555 end
5656
5757 def included ( mod )
58- method_classes = mod . ancestors
59- method_classes . shift
60- method_classes . delete ( self )
61- CLASSES_NOT_TO_OVERRIDE . each do |klass |
62- index = method_classes . index ( klass )
63- method_classes . slice! ( index ..-1 ) if index
64- end
58+ method_classes = classes_to_override_methods ( mod )
6559
6660 [ :public , :protected , :private ] . each do |visibility |
6761 get_inherited_methods ( method_classes , visibility ) . each do |method_name |
68- method_args = parameters_to_args ( mod . instance_method ( method_name ) . parameters )
69- method_args << "&never_hooked"
62+ args = args_for_method ( mod . instance_method ( method_name ) )
7063
7164 mod . class_eval <<-DEF_METHOD , __FILE__ , __LINE__ +1
72- def #{ method_name } (#{ method_args . join ( "," ) } )
65+ def #{ method_name } (#{ args } )
7366 raise ::Spy::NeverHookedError, "'#{ method_name } ' was never hooked on mock spy."
7467 end
7568
@@ -81,6 +74,17 @@ def #{method_name}(#{method_args.join(",")})
8174
8275 private
8376
77+ def classes_to_override_methods ( mod )
78+ method_classes = mod . ancestors
79+ method_classes . shift
80+ method_classes . delete ( self )
81+ CLASSES_NOT_TO_OVERRIDE . each do |klass |
82+ index = method_classes . index ( klass )
83+ method_classes . slice! ( index ..-1 ) if index
84+ end
85+ method_classes
86+ end
87+
8488 def get_inherited_methods ( klass_ancestors , visibility )
8589 get_methods_method = "#{ visibility } _instance_methods" . to_sym
8690 instance_methods = klass_ancestors . map ( &get_methods_method )
@@ -89,8 +93,8 @@ def get_inherited_methods(klass_ancestors, visibility)
8993 instance_methods - Object . send ( get_methods_method )
9094 end
9195
92- def parameters_to_args ( params )
93- params . map do |type , name |
96+ def args_for_method ( method )
97+ args = method . parameters . map do |type , name |
9498 name ||= :args
9599 case type
96100 when :req
@@ -101,6 +105,8 @@ def parameters_to_args(params)
101105 "*#{ name } "
102106 end
103107 end . compact
108+ args << "&never_hooked"
109+ args . join ( "," )
104110 end
105111 end
106112 end
0 commit comments