Thanks for the feedback. Yea, thats an obvious solution. I'll have to 
namespace my examples so they don't conflict with some other similarly 
named tests. Will play with it a bit more. Would be neat if there was a 
context group what was intelligent enough not to redeclare everything.

On Monday, April 29, 2013 1:16:38 AM UTC-4, [email protected] wrote:
>
> On Sun, Apr 28, 2013 at 8:33 PM, Adam Gotterer <[email protected]<javascript:>
> > wrote:
>
>> The example would be pretty specific to my app. But here's a shot at a 
>> simplification... I have an app with multiple modules. This particular 
>> module is responsible for parsing different types of input data. Each 
>> parser has it own data types, but there are some that are common. There's a 
>> separate spec for each parser. The goal was to essentially namespace a 
>> group of shared examples that I could then be referenced with a behaves 
>> like.
>>
>> It seems like the "proper" way would be to put all the shared examples, 
>> customer matchers, shared methods and variables on the global level. The 
>> downside is that I'll have to namespace all the examples, method and 
>> variable names (other modules make references to similar names). Including 
>> them in tests will be cumbersome since you will need to explicitly include 
>> each example individually instead of including the whole group (shared 
>> context).
>>
>> While what I came up with may not be perfect. It actually works well 
>> minus the annoying warnings. Do you think theres a better approach? Thanks!
>>
>
> It's very difficult to discuss these ideas without a concrete example, but 
> from what you've described, what I would do is:
>
> shared_examples_for 'group_a' do
>   ...
> end  
>
> shared_examples_for 'group_a' do
>   ...
> end  
>
> shared_context 'some_context' do
>   let(:some_var) { ... }
>   matcher :some_matches { ... {
> end
>
> describe "something" do
>   include_context "some context"
>
>   it_behaves_like "group_a"
>   it_behaves_like "group_b"
> end
>
> This gives  you the outcome you're looking for (I think) without nesting 
> the shared examples within the shared context, but resulting in applying 
> the shared context to each of the shared examples. Make sense?
>
> HTH,
> David
>  
>
>>
>>
>> On Saturday, April 27, 2013 11:57:38 PM UTC-4, [email protected] wrote:
>>
>>> shared_examples are definitely not intended to be used that way.
>>>
>>> Can you give a more concrete example of what you're trying to accomplish?
>>>
>>>
>>> On Sat, Apr 27, 2013 at 5:59 PM, Adam Gotterer <[email protected]>wrote:
>>>
>>>>  I have a bunch of shared_examples that I've put in a shared context. 
>>>> The setup works but running them causes an rspec WARNING: Shared example 
>>>> group '...' has been previously defined at:... Which makes me assume there 
>>>> might be a better way. Was curious if there is?
>>>>
>>>> Simple example:
>>>>
>>>> shared_context 'some_context' do
>>>>   let(:some_var) { ... }
>>>>   matcher :some_matches { ... {
>>>>   
>>>>   shared_examples_for 'group_a' do
>>>>     ...
>>>>   end  
>>>>
>>>>   shared_examples_for 'group_b' do
>>>>     ...
>>>>   end  
>>>> end
>>>>
>>>>
>>>>  -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "rspec" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to rspec+un...@**googlegroups.com.
>>>> To post to this group, send email to [email protected].
>>>>
>>>> To view this discussion on the web visit https://groups.google.com/d/**
>>>> msg/rspec/-/RSW0nfr1apwJ<https://groups.google.com/d/msg/rspec/-/RSW0nfr1apwJ>
>>>> .
>>>> For more options, visit 
>>>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out>
>>>> .
>>>>  
>>>>  
>>>>
>>>
>>>  -- 
>> You received this message because you are subscribed to the Google Groups 
>> "rspec" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected] <javascript:>
>> .
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msg/rspec/-/w72JsYQdWSYJ.
>>
>> For more options, visit https://groups.google.com/groups/opt_out.
>>  
>>  
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"rspec" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msg/rspec/-/gcvEGgFs0_oJ.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to