[rspec-users] [Rspec] How do you nest before(:all) or after(:all) blocks?

David Chelimsky
Wed, 04 Feb 2009 14:03:19 -0000

On Wed, Feb 4, 2009 at 3:07 AM, John Kolokotronis <johnjkle at gmail.com>
wrote:
> Hi all,
>
> I''m new to Rspec but loving it so far and looking to use it as a
> replacement for a Test::Unit framework I have which drives a web app
> via Watir. So far, things have worked very well with Rspec but I
can''t
> get my head around how before/after(:all) blocks would work in nested
> groups, or even if what I am doing is possible.
>
> What I want to do is something like this:
>
> describe "This is a set of tests: " do
>        before(:all) do
>                puts "this should only appear once"
>        end
>
>        describe "Test 1" do
>                puts "test 1"
>        end
>
>        describe "Test 2" do
>                puts "test 2"
>        end
> end
>
> Expecting the before(:all) block to run only once and see something
> like:
>
> - this should only appear once
> - test 1
> - test 2
>
> but what I am getting is:
>
> - this should only appear once
> - test 1
> - this should only appear once
> - test 2
>
> So my question is, how can you add before/after(:all) blocks that run
> once and only once for for all examples, if all the examples are
> nested in one main describe block? Is that something that''s even
> possible? I''d appreciate any pointers anyone may have. Thanks!

Right now it''s not possible. There''s an open ticket on this:

http://rspec.lighthouseapp.com/projects/5645/tickets/632

>
> Regards,
>
> John
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>