Upgraded Rails and RSpec
[monkeycharger.git] / vendor / plugins / rspec / lib / spec / mocks / mock.rb
blobaa380e0afd756817f340badcbc5522750685dc72
1 module Spec
2   module Mocks
3     class Mock
4       include Methods
6       # Creates a new mock with a +name+ (that will be used in error messages only)
7       # == Options:
8       # * <tt>:null_object</tt> - if true, the mock object acts as a forgiving null object allowing any message to be sent to it.
9       def initialize(name, options={})
10         @name = name
11         @options = options
12       end
14       def method_missing(sym, *args, &block)
15         __mock_proxy.instance_eval {@messages_received << [sym, args, block]}
16         begin
17           return self if __mock_proxy.null_object?
18           super(sym, *args, &block)
19         rescue NoMethodError
20           __mock_proxy.raise_unexpected_message_error sym, *args
21         end
22       end
23       
24       def inspect
25         "#<#{self.class}:#{sprintf '0x%x', self.object_id} @name=#{@name.inspect}>"
26       end
27     end
28   end
29 end