On 10 Dec 2010, at 20:25, Gennady Bystritsky wrote:
> Is there a way not to execute an example when another one fails? I want to
> minimize failure noises in cases when, say, one spec checks that an array has
> an expected number of elements while the others drill down on a specific
> element. However, when there's a wrong number of elements in the first place,
> other failures are just noise.
>
> Consider the following spec:
>
> 1 class Sample
> 2 attr_reader :items
> 3 def initialize(number)
> 4 @items = (1 .. number).map { |_item|
> 5 Struct.new(:name).new("ITEM:#{_item}")
> 6 }
> 7 end
> 8 end
> 9
> 10 describe Sample, "when creating 2 named items" do
> 11 let(:items) { Sample.new(2).items }
> 12 subject { items }
> 13
> 14 it { should have(2).entries }
> 15
> 16 context "first item" do
> 17 subject { items.first }
> 18 its(:name) { should == "ITEM:1" }
> 19 end
> 20
> 21 context "last item" do
> 22 subject { items.last }
> 23 its(:name) { should == "ITEM:2" }
> 24 end
> 25 end
>
> When run, it produces the following:
>
> $ rspec -fd sample_spec.rb
>
> Sample when creating 2 named items
> should have 2 entries
> first item
> name
> should == "ITEM:1"
> last item
> name
> should == "ITEM:2"
>
> Finished in 0.00158 seconds
> 3 examples, 0 failures
>
> Everything is great until I have an "innocent" bug in the range in line 4,
> like "(1 ... number)" instead of "(1 .. number)". In which case the above
> command will produce this:
>
> $ rspec -fd sample_spec.rb
>
> Sample when creating 2 named items
> should have 2 entries (FAILED - 1)
> first item
> name
> should == "ITEM:1"
> last item
> name
> should == "ITEM:2" (FAILED - 2)
>
> Failures:
>
> 1) Sample when creating 2 named items
> Failure/Error: it { should have(2).entries }
> expected 2 entries, got 1
> # ./sample_spec.rb:14
>
> 2) Sample when creating 2 named items last item name
> Failure/Error: its(:name) { should == "ITEM:2" }
> expected: "ITEM:2",
> got: "ITEM:1" (using ==)
> # ./sample_spec.rb:23
>
> Finished in 0.00167 seconds
> 3 examples, 2 failures
>
> In the above, failure 2) is a direct result of failure 1) and would be great
> to avoided if possible. Especially if I want to spec much more stuff there
> with much more noise being displayed.
>
> Thank you for your help,
> Gennady.
I don't consider that noise, I consider it useful clues as to what's wrong.
cheers,
Matt
[email protected]
07974 430184
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users