Skip to content

Instantly share code, notes, and snippets.

@atzkey
Created August 15, 2011 16:24
Show Gist options
  • Save atzkey/1147109 to your computer and use it in GitHub Desktop.
Save atzkey/1147109 to your computer and use it in GitHub Desktop.
Shoulda context that allows stubbing of constants
def context_with_constants(name, object, constants, &block)
object ||= Object
context "#{name} with constants #{constants.inspect}" do
setup do
@saved_constants = {}
constants.each do |k, v|
@saved_constants[k] = object.const_get(k)
Kernel::silence_warnings { object.const_set(k, v) }
end
end
block.bind(self).call if block_given?
teardown do
constants.each do |k, v|
@saved_constants[k] = object.const_get(k)
Kernel::silence_warnings { object.const_set(k, @saved_constants[k]) }
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment