class RSpec::Mocks::ConstantMutator::UndefinedConstantSetter

Sets an undefined constant for the duration of an example.

@private

Public Instance Methods

mutate() click to toggle source
# File lib/rspec/mocks/mutate_const.rb, line 275
def mutate
  @parent = @context_parts.inject(Object) do |klass, name|
    if const_defined_on?(klass, name)
      get_const_defined_on(klass, name)
    else
      ConstantMutator.stub(name_for(klass, name), Module.new)
    end
  end

  @parent.const_set(@const_name, @mutated_value)
end
reset() click to toggle source
# File lib/rspec/mocks/mutate_const.rb, line 295
def reset
  @parent.__send__(:remove_const, @const_name)
end
to_constant() click to toggle source
# File lib/rspec/mocks/mutate_const.rb, line 287
def to_constant
  const = super
  const.stubbed = true
  const.previously_defined = false

  const
end

Private Instance Methods

name_for(parent, name) click to toggle source
# File lib/rspec/mocks/mutate_const.rb, line 301
def name_for(parent, name)
  root = if parent == Object
           ''
         else
           parent.name
         end
  root + '::' + name
end