Module: Mocha::ObjectMethods
- Defined in:
- lib/mocha/object.rb,
lib/mocha/parameter_matchers/object.rb
Overview
Methods added to all objects to allow mocking and stubbing on real (i.e. non-mock) objects.
Both #expects and #stubs return an Expectation which can be further modified by methods on Expectation.
Instance Method Summary (collapse)
-
- (Expectation) expects(expected_methods_vs_return_values)
Adds an expectation that the specified method must be called exactly once with any parameters.
-
- (Expectation) stubs(stubbed_methods_vs_return_values)
Adds an expectation that the specified method may be called any number of times with any parameters.
- - (Object) unstub(*method_names)
Instance Method Details
- (Expectation) expects(method_name) - (Expectation) expects(expected_methods_vs_return_values)
Adds an expectation that the specified method must be called exactly once with any parameters.
The original implementation of the method is replaced during the test and then restored at the end of the test.
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/mocha/object.rb', line 63 def expects(expected_methods_vs_return_values) if expected_methods_vs_return_values.to_s =~ /the[^a-z]*spanish[^a-z]*inquisition/i raise Mocha::ExpectationError.new('NOBODY EXPECTS THE SPANISH INQUISITION!') end if frozen? raise StubbingError.new("can't stub method on frozen object: #{mocha_inspect}", caller) end expectation = nil mockery = Mocha::Mockery.instance iterator = ArgumentIterator.new(expected_methods_vs_return_values) iterator.each { |*args| method_name = args.shift mockery.on_stubbing(self, method_name) method = stubba_method.new(stubba_object, method_name) mockery.stubba.stub(method) expectation = mocha.expects(method_name, caller) expectation.returns(args.shift) if args.length > 0 } expectation end |
- (Expectation) stubs(method_name) - (Expectation) stubs(stubbed_methods_vs_return_values)
Adds an expectation that the specified method may be called any number of times with any parameters.
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/mocha/object.rb', line 110 def stubs(stubbed_methods_vs_return_values) if frozen? raise StubbingError.new("can't stub method on frozen object: #{mocha_inspect}", caller) end expectation = nil mockery = Mocha::Mockery.instance iterator = ArgumentIterator.new(stubbed_methods_vs_return_values) iterator.each { |*args| method_name = args.shift mockery.on_stubbing(self, method_name) method = stubba_method.new(stubba_object, method_name) mockery.stubba.stub(method) expectation = mocha.stubs(method_name, caller) expectation.returns(args.shift) if args.length > 0 } expectation end |
- (Object) unstub(*method_names)
Removes the specified stubbed methods (added by calls to #expects or #stubs) and all expectations associated with them.
Restores the original behaviour of the methods before they were stubbed.
WARNING: If you #unstub a method which still has unsatisfied expectations, you may be removing the only way those expectations can be satisfied. Use #unstub with care.
151 152 153 154 155 156 157 |
# File 'lib/mocha/object.rb', line 151 def unstub(*method_names) mockery = Mocha::Mockery.instance method_names.each do |method_name| method = stubba_method.new(stubba_object, method_name) mockery.stubba.unstub(method) end end |