views:

141

answers:

1

Should the following test assert an exception was thrown? On my pc it doesn't and I want to know if this is expected behavior.

   def a
     raise RuntimeError
   end

   def b
     begin
       a
     rescue RuntimeError
       puts "bummer"
     end
   end

   test "assert this" do
     assert_raises RuntimeError do
       b
     end
   end
+4  A: 

It's an intended behavior. assert_raise doesn't check whether an exception is raised somewhere in the script execution, it checks whether the block raises an uncaught exception of given type.

In other words, it works only if you remove the rescue statement.

Simone Carletti
ahhh now that will explain it. Thanks very much!
adam