[rspec-users] Understanding before(:all)

David Chelimsky dchelimsky at gmail.com
Wed Jan 14 10:38:36 EST 2009

On Sat, Jan 10, 2009 at 12:59 PM, David Richards
<drichards at showcase60.com> wrote:
> I had, for historic reasons, a setup on a group of specs:
>  before(:all) do
>    @contents = [%w(this that), %w(this other)]
>    FasterCSV.stub!(:open).and_return(@contents)
>    @filename = 'test_filename'
>  end
> When I ran the single file (spec spec/transformer/csv_spec.rb), all my
> specs passed.  When I ran the whole project's specs together (spec
> spec/), these failed.  Changing before(:all) to before(:each) worked,
> but for reasons that are not clear to me.  The before(:all) approach
> didn't work because the FasterCSV stub wasn't being set.
> Can someone explain why there would be different behavior between
> running one file and many files and before(:each) vs. before(:all)?
> As far as I understand it, I thought before(:all) was supposed to
> always run before a group of specs.  Is it possible that a before
> (:all) doesn't work right when calling multiple/all specs at the same
> time?

Mocks and stubs get cleared out after each example, so you need to set
them before each example.

before(:all) should run once per group regardless of whether you're
loading one file or many.


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

More information about the rspec-users mailing list