Thanks David,

So, taking from your book, on page 212:

=begin
  def working_too_hard?
    catch :working_too_hard do
      weeks.each do |week|
        people.each do |person|
          throw :working_too_hard, true if person.hours_for(week) > 50
        end
      end
    end
  end

To set an expectation that a symbol is thrown, we wrap up the code in a proc
  and set the expectation on the proc:

  lambda {
    team.working_too_hard?
  }.should throw_symbol(:working_too_hard)
=end

I guess that is a typo, correct?

On 2009-Aug-18, at 14:34 , David Chelimsky wrote:

On Tue, Aug 18, 2009 at 12:19 PM, Paul
Mylchreest<[email protected]> wrote:
Given
 rspec 1.2.8
 ruby 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0]

And the following spec:

 def over_limit?(a)
   catch(:over_limit) do
     a.each do |x|
       throw(:over_limit) if x > 10
     end
   end
 end

 describe "when over limit" do
   it "should throw symbol :over_limit" do
     lambda{
       over_limit?([0, 5, 11])
     }.should throw_symbol(:over_limit)
   end
 end

One would expect this to pass, however this is the result:

 when over limit
 - should throw symbol :over_limit (FAILED - 1)

 1)
 'when over limit should throw symbol :over_limit' FAILED
 expected :over_limit but nothing was thrown
 ./spec/rspec_tests/rutabaga_spec.rb:125:

When the catch is removed, it works.

That's correct. The catch in over_limit() catches the throw, so it
does not bubble out of the method.


Can anyone reproduce this behavior?

thanks

Paul Mylchreest
[email protected]



_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

Paul Mylchreest
[email protected]



_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to