Hiya all,

I've got a quick question related to RSpec. I was test-driving some code and 
ended up in an endless loop. I was surprised by this, but traced it down to the 
mock not failing on additional calls but only in the end. Let me explain.

I was writing code like this:

   subject.wrapper.should_receive(:window_list).exactly(4).times.and_return {
       counter = counter + 1
       counter >= 4 ? [ "new window" ] : []
     }

The idea was that it would call the code-block 4 times exactly and then return 
a new value (and thus stop calling it). As the code to implement wasn't there 
yet, it led to a recursive call. I had expected RSpec to stop after 4 calls 
though, as I had instructed the mock that I expected exactly 4 calls.

I added a new test in RSpec itself in precision_counts_spec.rb:

     it "fails when a method is called more than n times, but fails within the 
method call" do
       @mock.should_receive(:random_call).exactly(1).times
       lambda do
         @mock.random_call
         @mock.random_call
       end.should raise_error(RSpec::Mocks::MockExpectationError)        
     end

which failed :( (or it failed to fail and therefore failed!)

It would be nice if it would fail. Is there any reason for not failing already 
at this point in time?

(I'm using RSpec 2.6-0. I quickly browsed the latest and didn't see this 
changed)

Thanks,

Bas

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

Reply via email to