Here's an illustrative example that should clear things up:

require 'spec_helper'

describe "behavior of before-each and before-all" do
  before(:all) { puts "-- running :all" }
  before(:each) { puts "-- running :each" }

  describe "addition" do
    it "should add two and two" do
      (2 + 2).should == 4
    end

    it "should add three and three" do
      (3 + 3).should == 6
    end

    it "should add four and four" do
      (4 + 4).should == 8
    end
  end

  describe "multiplication" do
    it "should raise two to two" do
      (2 ** 2).should == 4
    end

    it "should raise three to three" do
      (3 ** 3).should == 27
    end

    it "should raise four to four" do
      (4 ** 4).should == 256
    end
  end
end


And here's the result:

behavior of before-each and before-all
-- running :all
  addition
-- running :each
    should add two and two
-- running :each
    should add three and three
-- running :each
    should add four and four
  multiplication
-- running :each
    should raise two to two
-- running :each
    should raise three to three
-- running :each
    should raise four to four

Finished in 0.0034 seconds
6 examples, 0 failures

Notice how :each runs before _each_ spec, but :all runs once, before _any_spec.
--
John Feminella
Principal Consultant, BitsBuilder
LI: http://www.linkedin.com/in/fjsquared
SO: http://stackoverflow.com/users/75170/



On Thu, Jan 27, 2011 at 17:56, Brian Warner <li...@ruby-forum.com> wrote:
> I'm having a hard time grasping the difference between :each and :all.
>
> If I have a bunch of stuff inside a "before :each" block. Everytime I
> try to run an example that block of code will be run before the example.
>
> Now if I had the same code inside a "before :all" block. Everytime an
> example is run, that block will still be run. Yielding the same results.
> At least in my mind.
>
> The RSpec book says something like "before :each" defines a state for
> each example. "before :all" defines a state for all the examples. But
> what's the difference?
>
> --
> Posted via http://www.ruby-forum.com/.
> _______________________________________________
> rspec-users mailing list
> rspec-users@rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to