robodisco
robodisco

Reputation: 4290

RAILS - How deep does assert_raise check for an exception

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

Upvotes: 2

Views: 1065

Answers (1)

Simone Carletti
Simone Carletti

Reputation: 176552

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.

Upvotes: 7

Related Questions