[rspec-users] Interesting shared behaviour side-effect

Wincent Colaiuta win at wincent.com
Sun Oct 21 06:01:37 EDT 2007


Given the following ApplicationController specs:

   describe ApplicationController, "one facet", :shared => true do
     it 'foo' ...
     it 'bar' ...
   end

   describe ApplicationController, "some other facet", :shared =>  
true do
     it 'abc' ...
     it 'xyz' ...
   end

   describe ApplicationController, :shared => true do
     it_should_behave_like 'ApplicationController one facet'
     it_should_behave_like 'ApplicationController some other facet'
   end

And corresponding ApplicationController subclass specs:

   describe OtherController do
     it_should_behave_like 'ApplicationController'
   end

Both of the shared behaviour blocks get executed twice when running  
the subclass specs; the specdoc output looks like:

   OtherController
   - foo
   - bar
   - abc
   - xyz
   - abc
   - xyz
   - foo
   - bar

And note that it's running the shared behaviours in this order:

   - 'one facet'
   - 'some other facet'
   - 'some other facet'
   - 'one facet'

Not actually a big deal; seeing as the specs don't have any side- 
effects and running them twice is harmless, and in any case getting  
rid of the nesting (putting all the specs in a single shared  
behaviour block) gets rid of the duplicate. But I'm wondering, is  
this a bug? Feature? Am I abusing shared behaviours?

Cheers,
Wincent





More information about the rspec-users mailing list