El 26/07/2010, a las 09:31, Ashley Moran escribió:
> I'm back again, and still on a quest to tame shared example to do my bidding.
> This time what I'm wondering is... is there any way to format shared example
> specdoc description output with data passed in with #let, or otherwise? eg:
> How do I get "1" and "2" into either of the placeholders <i> here?
>
> shared_examples_for "Comparable" do
> describe "comparing <i>" do
> it "defines equality for <i>" do
> object.should eq object
> end
> end
> end
>
> describe Integer do
> it_should_behave_like "Comparable" do
> let(:object) { 1 }
> end
> it_should_behave_like "Comparable" do
> let(:object) { 2 }
> end
> end
>
> (If I had to duplicate the 1 and 2 that wouldn't be the end of the world, as
> long as the syntax for including the shared examples was simple enough.)
Seems to me that including the same shared example group twice in the same
"describe" block is a bit of an abuse, to be honest. I don't think it was ever
really intended to be used in that way.
Your shared_examples_for should be written in such a way that they don't need
to reference "<i>"; ie:
shared_examples_for "Comparable" do
it 'defines equality' do
subject.should eq(subject)
end
end
And then you use it like this:
describe Integer do
[1, 2].each do |i|
describe i do
it_should_behave_like 'Comparable'
end
end
end
Obviously this is a toy example that you've given us, and I don't see why you'd
want to test 1 and 2 like that, but for the purposes of illustration... The
specdoc output for that would look like:
Integer
1
it should behave like Comparable
defines equality
2
it should behave like Comparable
defines equality
I know you probably have some real example in mind hiding behind that toy
example, but I believe anything you want to test can be written in the same way
(ie. without needing to inject the "<i>" into your shared examples).
Cheers,
Wincent
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users