Class/Module Index [+]

Quicksearch

Mocha::ObjectMethods

Methods added to all objects to allow mocking and stubbing on real objects.

Methods return a Mocha::Expectation which can be further modified by methods on Mocha::Expectation.

Public Instance Methods

expects(method_name) → expectation click to toggle source
expects(method_names_vs_return_values) → last expectation

Adds an expectation that a method identified by method_name Symbol must be called exactly once with any parameters. Returns the new expectation which can be further modified by methods on Mocha::Expectation.

product = Product.new
product.expects(:save).returns(true)
assert_equal true, product.save

The original implementation of Product#save is replaced temporarily.

The original implementation of Product#save is restored at the end of the test.

If method_names_vs_return_values is a Hash, an expectation will be set up for each entry using the key as method_name and value as return_value.

product = Product.new
product.expects(:valid? => true, :save => true)

# exactly equivalent to

product = Product.new
product.expects(:valid?).returns(true)
product.expects(:save).returns(true)
# File lib/mocha/object.rb, line 53
def expects(method_name_or_hash)
  if method_name_or_hash.to_s =~ /the[^a-z]*spanish[^a-z]*inquisition/
    raise Mocha::ExpectationError.new('NOBODY EXPECTS THE SPANISH INQUISITION!')
  end
  expectation = nil
  mockery = Mocha::Mockery.instance
  iterator = ArgumentIterator.new(method_name_or_hash)
  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
mocha_inspect() click to toggle source
# File lib/mocha/inspect.rb, line 6
def mocha_inspect
  address = self.__id__ * 2
  address += 0x100000000 if address < 0
  inspect =~ /#</ ? "#<#{self.class}:0x#{'%x' % address}>" : inspect
end
stubs(method_name) → expectation click to toggle source
stubs(method_names_vs_return_values) → last expectation

Adds an expectation that a method identified by method_name Symbol may be called any number of times with any parameters. Returns the new expectation which can be further modified by methods on Mocha::Expectation.

product = Product.new
product.stubs(:save).returns(true)
assert_equal true, product.save

The original implementation of Product#save is replaced temporarily.

The original implementation of Product#save is restored at the end of the test.

If method_names_vs_return_values is a Hash, an expectation will be set up for each entry using the key as method_name and value as return_value.

product = Product.new
product.stubs(:valid? => true, :save => true)

# exactly equivalent to

product = Product.new
product.stubs(:valid?).returns(true)
product.stubs(:save).returns(true)
# File lib/mocha/object.rb, line 93
def stubs(method_name_or_hash)
  expectation = nil
  mockery = Mocha::Mockery.instance
  iterator = ArgumentIterator.new(method_name_or_hash)
  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
unstub(*method_names) click to toggle source

Removes the method stub added by calls to expects or stubs. Restores the original behaviour of the method before it was stubbed.

multiplier = Multiplier.new
multiplier.double(2) # => 4
multiplier.stubs(:double).raises
multiplier.double(2) # => raises exception
multiplier.unstub(:double)
multiplier.double(2) # => 4

The original implementation of Multiplier#double is replaced temporarily.

The original implementation of Multiplier#double is restored when unstub is called.

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.

If multiple method_names are supplied, each method is unstubbed.

multiplier.unstub(:double, :triple)

# exactly equivalent to

multiplier.unstub(:double)
multiplier.unstub(:triple)
# File lib/mocha/object.rb, line 133
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

[Validate]

Generated with the Darkfish Rdoc Generator 2.