読者です 読者をやめる 読者になる 読者になる

なんでもいいから例外を期待するassert

Rails Ruby

調べたところ、assert_raiseという例外を期待するassertはあるのですが、
投げる例外クラスを指定する必要があるようで、投げられる例外クラスがわからないけど、
とにかく例外を投げてくれることを期待するassertはないようです。
なので作りました。

module Test
  module Unit
    module Assertions
      def assert_raise_something(message=nil)
        actual_exception=nil
        message="assert block not raised." unless message
        assert_block(message) do
          begin
            yield
          rescue Exception => actual_exception
            break true
          end
          false
        end
      end
    end
  end
end

これをtest_helper.rbに追加して、

assert_raise_something{jikken.save!}

のようにして例外を起こすかどうかをassertします。
ブロックで引数を渡します。メッセージを変えたいときは

assert_raise_something("This test was not raised."){jikken.save!}

のように変更します。