RAILS - assert_raise检查异常的深度

时间:2009-12-14 14:23:21

标签: ruby-on-rails ruby 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

1 个答案:

答案 0 :(得分:7)

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

换句话说,仅当您删除rescue语句时,它才有效。