aboutsummaryrefslogtreecommitdiffstats
path: root/lib/minitest/mock.rb
diff options
context:
space:
mode:
authorryan <ryan@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-11-30 22:45:53 +0000
committerryan <ryan@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-11-30 22:45:53 +0000
commit3632f4cf1cfda24d81e1dbe0576fbce52fcb85af (patch)
treed7611612bb67be13478acb5a8e4146b3a348b692 /lib/minitest/mock.rb
parent715ec08107c4b96175049efb288925a5bd463ec2 (diff)
downloadruby-3632f4cf1cfda24d81e1dbe0576fbce52fcb85af.tar.gz
Imported minitest 2.0.0 r5952
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29986 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/minitest/mock.rb')
-rw-r--r--lib/minitest/mock.rb21
1 files changed, 14 insertions, 7 deletions
diff --git a/lib/minitest/mock.rb b/lib/minitest/mock.rb
index 4871e8b183..99f7992aa9 100644
--- a/lib/minitest/mock.rb
+++ b/lib/minitest/mock.rb
@@ -14,14 +14,7 @@ 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
@@ -34,5 +27,19 @@ 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