class FlexMock::ExplicitNeeded
Expectations on mocks with a base class can only be defined on methods supported by the base class. Attempting to add an stub to a method not defined on the base class will cause the expectation to be wrapped in an ExplicitNeeded
wrapper. The wrapper will throw an exception unless the explicitly method is immediately called on the expectation.
Constants
- WHITELIST
Public Class Methods
new(expectation, method_name, base_class)
click to toggle source
# File lib/flexmock/explicit_needed.rb, line 12 def initialize(expectation, method_name, base_class) @expectation = expectation @explicit = false @method_name = method_name @base_class = base_class end
Public Instance Methods
explicit?()
click to toggle source
# File lib/flexmock/explicit_needed.rb, line 24 def explicit? @explicit end
explicitly()
click to toggle source
# File lib/flexmock/explicit_needed.rb, line 19 def explicitly @explicit = true self end
method_missing(sym, *args, &block)
click to toggle source
# File lib/flexmock/explicit_needed.rb, line 34 def method_missing(sym, *args, &block) if explicit? || WHITELIST.include?(sym) @expectation.send(sym, *args, &block) else fail NoMethodError, "Cannot stub methods not defined by the base class\n" + " Method: #{@method_name}\n" + " Base Class: #{@base_class}\n" + " (Use 'explicitly' to override)" end end
mock=(m)
click to toggle source
# File lib/flexmock/explicit_needed.rb, line 28 def mock=(m) @expectation.mock = m end