[rspec-devel] Confusion over SharedExampleGroups

David Chelimsky dchelimsky at gmail.com
Wed Apr 29 13:16:03 EDT 2009


On Apr 29, 2009, at 11:51 AM, David Chelimsky <dchelimsky at gmail.com>  
wrote:

> On Wed, Apr 29, 2009 at 11:42 AM, Brian Takita  
> <brian at pivotallabs.com> wrote:
>> A colleague of mine ran into issues with the usage of  
>> SharedExampleGroups.
>>
>> He was expecting it to create its own ExampleGroup (describe block)
>> when it is invoked using it_should_behave_like, and was surprised  
>> when
>> test pollution occurred due to a before block in the
>> SharedExampleGroup.
>>
>> What is your experience with this?
>>
>> Should there be another type of SharedExampleGroup that does
>> encapsulate before blocks?
>>
>> For example,
>>
>> shared_describe "My shared specs" do
>>  before do
>>    @defined_in_shared_example_group = true
>>  end
>>
>>  it "should not interfere with other specs" do
>>  end
>> end
>>
>> describe Foobar do
>>  it_should_behave_like "My shared specs"
>>
>>  it "should not see defined_in_shared_example_group" do
>>    @defined_in_shared_example_group.should be_nil
>>  end
>> end
>
> What's the point of doing this? i.e. why would you want a shared group
> that does not share state? They are not parameterized, so they are not
> configurable except through shared state. Unless you're thinking that
> the shared state is access to Foobar through described class, which
> begs the question if we're sharing some state, why not share all
> state?

Actually, if the shared group ends up being a subclass, then befores  
in the current group would be available to the shared group, but not  
the other way round. Then the subgroup could be named "behaving like  
My shared specs" or some such.

Thoughts?


More information about the rspec-devel mailing list