logger()
click to toggle source
def logger
@logger ||= Logger.new($stderr)
end
mocha_inspect()
click to toggle source
def mocha_inspect
message = ""
message << "unsatisfied expectations:\n- #{unsatisfied_expectations.map { |e| e.mocha_inspect }.join("\n- ")}\n" unless unsatisfied_expectations.empty?
message << "satisfied expectations:\n- #{satisfied_expectations.map { |e| e.mocha_inspect }.join("\n- ")}\n" unless satisfied_expectations.empty?
message << "states:\n- #{state_machines.map { |sm| sm.mocha_inspect }.join("\n- ")}" unless state_machines.empty?
message
end
mock_impersonating(object, &block)
click to toggle source
def mock_impersonating(object, &block)
add_mock(Mock.new(self, ImpersonatingName.new(object), &block))
end
mock_impersonating_any_instance_of(klass, &block)
click to toggle source
def mock_impersonating_any_instance_of(klass, &block)
add_mock(Mock.new(self, ImpersonatingAnyInstanceName.new(klass), &block))
end
mocks()
click to toggle source
def mocks
@mocks ||= []
end
named_mock(name, &block)
click to toggle source
def named_mock(name, &block)
add_mock(Mock.new(self, Name.new(name), &block))
end
new_state_machine(name)
click to toggle source
def new_state_machine(name)
add_state_machine(StateMachine.new(name))
end
on_stubbing(object, method)
click to toggle source
def on_stubbing(object, method)
method = RUBY_VERSION < '1.9' ? method.to_s : method.to_sym
unless Mocha::Configuration.allow?(:stubbing_non_existent_method)
unless object.method_exists?(method, include_public_methods = true)
on_stubbing_non_existent_method(object, method)
end
end
unless Mocha::Configuration.allow?(:stubbing_non_public_method)
if object.method_exists?(method, include_public_methods = false)
on_stubbing_non_public_method(object, method)
end
end
unless Mocha::Configuration.allow?(:stubbing_method_on_nil)
if object.nil?
on_stubbing_method_on_nil(object, method)
end
end
unless Mocha::Configuration.allow?(:stubbing_method_on_non_mock_object)
on_stubbing_method_on_non_mock_object(object, method)
end
end
on_stubbing_method_on_nil(object, method)
click to toggle source
def on_stubbing_method_on_nil(object, method)
if Mocha::Configuration.prevent?(:stubbing_method_on_nil)
raise StubbingError.new("stubbing method on nil: #{object.mocha_inspect}.#{method}", caller)
end
if Mocha::Configuration.warn_when?(:stubbing_method_on_nil)
logger.warn "stubbing method on nil: #{object.mocha_inspect}.#{method}"
end
end
on_stubbing_method_on_non_mock_object(object, method)
click to toggle source
def on_stubbing_method_on_non_mock_object(object, method)
if Mocha::Configuration.prevent?(:stubbing_method_on_non_mock_object)
raise StubbingError.new("stubbing method on non-mock object: #{object.mocha_inspect}.#{method}", caller)
end
if Mocha::Configuration.warn_when?(:stubbing_method_on_non_mock_object)
logger.warn "stubbing method on non-mock object: #{object.mocha_inspect}.#{method}"
end
end
on_stubbing_method_unnecessarily(expectation)
click to toggle source
def on_stubbing_method_unnecessarily(expectation)
if Mocha::Configuration.prevent?(:stubbing_method_unnecessarily)
raise StubbingError.new("stubbing method unnecessarily: #{expectation.method_signature}", expectation.backtrace)
end
if Mocha::Configuration.warn_when?(:stubbing_method_unnecessarily)
logger.warn "stubbing method unnecessarily: #{expectation.method_signature}"
end
end
on_stubbing_non_existent_method(object, method)
click to toggle source
def on_stubbing_non_existent_method(object, method)
if Mocha::Configuration.prevent?(:stubbing_non_existent_method)
raise StubbingError.new("stubbing non-existent method: #{object.mocha_inspect}.#{method}", caller)
end
if Mocha::Configuration.warn_when?(:stubbing_non_existent_method)
logger.warn "stubbing non-existent method: #{object.mocha_inspect}.#{method}"
end
end
on_stubbing_non_public_method(object, method)
click to toggle source
def on_stubbing_non_public_method(object, method)
if Mocha::Configuration.prevent?(:stubbing_non_public_method)
raise StubbingError.new("stubbing non-public method: #{object.mocha_inspect}.#{method}", caller)
end
if Mocha::Configuration.warn_when?(:stubbing_non_public_method)
logger.warn "stubbing non-public method: #{object.mocha_inspect}.#{method}"
end
end
state_machines()
click to toggle source
def state_machines
@state_machines ||= []
end
stubba()
click to toggle source
def stubba
@stubba ||= Central.new
end
teardown()
click to toggle source
def teardown
stubba.unstub_all
reset
end
unnamed_mock(&block)
click to toggle source
def unnamed_mock(&block)
add_mock(Mock.new(self, &block))
end
verify(assertion_counter = nil)
click to toggle source
def verify(assertion_counter = nil)
unless mocks.all? { |mock| mock.__verified__?(assertion_counter) }
message = "not all expectations were satisfied\n#{mocha_inspect}"
if unsatisfied_expectations.empty?
backtrace = caller
else
backtrace = unsatisfied_expectations[0].backtrace
end
raise ExpectationErrorFactory.build(message, backtrace)
end
expectations.each do |e|
unless Mocha::Configuration.allow?(:stubbing_method_unnecessarily)
unless e.used?
on_stubbing_method_unnecessarily(e)
end
end
end
end