module Dry::Core::Container::Stub

def _stubs

Stubs container
def _stubs
  @_stubs ||= {}
end

def enable_stubs!

Stubs have already been enabled turning this into a noop
def enable_stubs!
  # DO NOTHING
end

def resolve(key)

Other tags:
    Api: - public
def resolve(key)
  _stubs.fetch(key.to_s) { super }
end

def stub(key, value, &block)

Add a stub to the container
def stub(key, value, &block)
  unless key?(key)
    raise ::ArgumentError, "cannot stub #{key.to_s.inspect} - no such key in container"
  end
  _stubs[key.to_s] = value
  if block
    yield
    unstub(key)
  end
  self
end

def unstub(*keys)

Remove stubbed keys from the container
def unstub(*keys)
  keys = _stubs.keys if keys.empty?
  keys.each { |key| _stubs.delete(key.to_s) }
end