It's all gone a bit meta.

I've started noticing patterns in my specs, where I want more than one class to satisfy a specific bunch of behaviours.

I know I can use it_should_behave_like and this works in simple cases, but I want to be able to iterate around an array of values and generate a my bunch of it "should ..." specs for each item in the array.

I know I can do this by going

describe "the cheese factory"
        [:cheddar, :brie, :lancashire].each do |cheese|
                it "should create a valid piece of #{cheese}" do
                        Factory.create(cheese).should be_valid
                end

                it "should create a piece of #{cheese} with valid packaging" do
                        ... etc
        end
end

...but what if I want to specify other factories too, all of which conform to the it blocks I specified above? (e.g. a ToyFactory that creates valid toys with valid packaging). How can I factor that spec logic out?

I tried putting the content of the (do |cheese|) block into a method, but ruby doesn't seem to be able to see that method when the describe block runs... I guess I need to maybe patch it into some RSpec class instead? Or put it into a module and include it? Am I going down the wrong lines? is there an easier way to achieve this?

Sorry if this is a dumb question, I'm bumping up against the limitations of my ruby experience again :)

cheers,
Matt
----
http://blog.mattwynne.net
http://songkick.com

In case you wondered: The opinions expressed in this email are my own and do not necessarily reflect the views of any former, current or future employers of mine.



_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to