Module: RSpec::Core::Sandbox

Defined in:
lib/rspec/core/sandbox.rb

Overview

Note:

This module is not normally available. You must require rspec/core/sandbox to load it.

A sandbox isolates the enclosed code into an environment that looks 'new' meaning globally accessed objects are reset for the duration of the sandbox.

Class Method Summary collapse

Class Method Details

.sandboxedvoid

Execute a provided block with RSpec global objects (configuration, world) reset. This is used to test RSpec with RSpec.

When calling this the configuration is passed into the provided block. Use this to set custom configs for your sandboxed examples.

Sandbox.sandboxed do |config|
  config.before(:context) { RSpec.current_example = nil }
end


21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/rspec/core/sandbox.rb', line 21

def self.sandboxed
  orig_config  = RSpec.configuration
  orig_world   = RSpec.world
  orig_example = RSpec.current_example

  RSpec.configuration = RSpec::Core::Configuration.new
  RSpec.world         = RSpec::Core::World.new(RSpec.configuration)

  yield RSpec.configuration
ensure
  RSpec.configuration   = orig_config
  RSpec.world           = orig_world
  RSpec.current_example = orig_example
end