2

次のテストは、例外がスローされたことをアサートする必要がありますか? 私のPCではそうではありません。これが予想される動作であるかどうかを知りたいです。

   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

1 に答える 1

7

これは意図した動作です。assert_raiseスクリプト実行のどこかで例外が発生したかどうかをチェックするのではなく、ブロックが特定のタイプのキャッチされていない例外を発生させたかどうかをチェックします。

rescueつまり、ステートメントを削除した場合にのみ機能します。

于 2009-12-14T14:28:31.410 に答える