[rspec-users] How can I use nested "before" functions?

Matt Wynne matt at mattwynne.net
Fri Dec 3 19:43:58 EST 2010

On 1 Dec 2010, at 05:47, helino wrote:

> Hi everyone,
> I've started learning Ruby and RSpec, and I've ran into a small
> problem. I have one "before" functions which run before all my
> descriptions and the context in the spec, and then I have another
> "before" function inside a context, which is set to run once before
> all the "it" inside that context.
> My problems is that the outer "before" does not run prior to the
> "before" inside my context. This creates an error, since the "before"
> inside the context relies on a variable being created in the outmost
> "before".
> Is this how it is supposed to be, or am I doing something wrong?
> Gists:
> * "rspec spec --backtrace" output: https://gist.github.com/723021
> * router.rb: https://gist.github.com/723020
> * router_spec.rb: https://gist.github.com/723015

You're getting before(:each) and before(:all) mixed up.

before(:each) is the default. You really don't want to use before(:all) in anything but exceptional circumstances. Right now you have a mix of the two, which I think it why you're getting the suprising behaviour.

> I'm using Ruby version 1.9.2p0 with rvm on Mac OS X 10.6.5 and RSpec
> 2.1.0.
> Thanks for a wonderful framework!
> Best regards,
> Erik
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users


matt at mattwynne.net
07974 430184

More information about the rspec-users mailing list