Question

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
Was it helpful?

Solution

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top