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.
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/mocha/object.rb', line 66 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.
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/mocha/object.rb', line 113 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.
154 155 156 157 158 159 160 |
# File 'lib/mocha/object.rb', line 154 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 |