RAILS - assert_raise检查异常的深度

rob*_*sco 2 ruby ruby-on-rails assertions

以下测试是否应该抛出异常?在我的电脑上它没有,我想知道这是否是预期的行为.

   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
Run Code Online (Sandbox Code Playgroud)

Sim*_*tti 7

这是一种预期的行为.assert_raise不检查是否在脚本执行的某处引发了异常,它检查该块是否引发给定类型的未捕获异常.

换句话说,只有在删除rescue语句时才有效.