読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

例外がスローされることをチェックする

例外がスローされることをチェックするには、「raise_error」マッチャーを使用します。

  • 「proc { <例外が発生する処理> }.should raise_error」のような形式で使用します。
  • raise_errorの引数として、期待される例外の型やmessageの値を指定して詳細なチェックを行うことが可能です。
  • また、ブロックを指定することで、例外に対する追加のチェックを行うこともできます。

以下は、「raise_error」の利用例です。

describe "test" do
  it "ex1" do
    # 「should raise_error」で
    # procを実行した際に何らかの例外が発生することを確認できる
    proc {
      raise "test"
    }.should raise_error
    
    # 例外の型やmessageを評価することも可能。
    proc {
      raise IOError.new( "test" )
    }.should raise_error( IOError )
    proc {
      raise IOError.new( "test" )
    }.should raise_error( IOError, "test" )
    proc {
      raise IOError.new( "test" )
    }.should raise_error( IOError, /t.*/ )
    
    # ブロックを指定することでさらに詳細なチェックも可能
    proc {
      ex = IOError.new( "test" )
      class << ex
        def var; "aaa" end
      end
      raise ex
    }.should raise_error( IOError, "test" ) {|ex|
      ex.var.should == "aaa"
    }
  end
end

実行結果です。

$ spec raise_spec.rb 
.

Finished in 0.028 seconds

1 example, 0 failures