diff options
Diffstat (limited to 'lib/minitest/mock.rb')
-rw-r--r-- | lib/minitest/mock.rb | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/lib/minitest/mock.rb b/lib/minitest/mock.rb index 99f7992aa9..4871e8b183 100644 --- a/lib/minitest/mock.rb +++ b/lib/minitest/mock.rb @@ -14,7 +14,14 @@ module MiniTest end def expect(name, retval, args=[]) + n, r = name, retval # for the closure below @expected_calls[name] = { :retval => retval, :args => args } + self.class.__send__ :remove_method, name if respond_to? name + self.class.__send__(:define_method, name) { |*x| + raise ArgumentError unless @expected_calls[n][:args].size == x.size + @actual_calls[n] << { :retval => r, :args => x } + retval + } self end @@ -27,19 +34,5 @@ module MiniTest end true end - - def method_missing(sym, *args) - raise NoMethodError unless @expected_calls.has_key?(sym) - raise ArgumentError unless @expected_calls[sym][:args].size == args.size - retval = @expected_calls[sym][:retval] - @actual_calls[sym] << { :retval => retval, :args => args } - retval - end - - alias :original_respond_to? :respond_to? - def respond_to?(sym) - return true if @expected_calls.has_key?(sym) - return original_respond_to?(sym) - end end end |