On Sunday, April 1, 2012 9:34:00 PM UTC-5, Bradley wrote:
>
> I have some let and before declarations that I want to define for all of 
> my tests.  I can't seem to figure out how to do this in a clean way (ie by 
> including a module in my Rspec config).  I don't want to have to 
> include_context for each test, I just want to run some before(:all) hooks 
> and provide access to some default variables that example groups could 
> override with their own let declarations.
>
> I must be missing something because I can't find anywhere in the docs how 
> I might achieve this.  Any help is greatly appreciated.
>
> Brad
>

Hey Brad,

You can set up global `before` hooks using `RSpec.configure` [1] [2]:

  RSpec.configure {|c| c.before(:all) { do_stuff }}

`let` is not supported in `RSpec.configure`, but you _can_ set up a global 
`let` by including it in a SharedContext module [3] and including that 
module using `config.before`:

  module MyLetDeclarations
    extend RSpec::Core::SharedContext
    let(:foo) { Foo.new }
  end
  RSpec.configure { |c| c.include MyLetDeclarations }

If you're going to use that, you may as well put all your global stuff in 
the same module:

  module GlobalStuff
    extend RSpec::Core::SharedContext
    before(:all) { do_stuff }
    let(:foo) { Foo.new }
  end
  RSpec.configure { |c| c.include MyLetDeclarations }

HTH,
David  

[1] http://rubydoc.info/gems/rspec-core/RSpec#configure-class_method
[2] http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
[3] http://rubydoc.info/gems/rspec-core/RSpec/Core/SharedContext
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to