Rubyでexitの挙動をテストする方法
処理を中断させる役割を持つメソッドがあったとして、そのメソッドがきちんと処理を中断させてくれているかどうかをテストするにはどうしたらいいのだろうと悩んだ。
だって、処理を中断させちゃうからテストできないじゃーん、みたいな。
具体的にはこんなメソッド
def die
exit(1)
end
で、Rubyリファレンスマニュアル - 組み込み関数を見ていたら、exitはただ単に例外を発生させているだけらしい。
ということで、以下のようにテストを書いてうまくいった。もっといい方法はあるのかな?
begin
die
rescue SystemExit => e
assert_equal("exit", e.message)
end
--- 補足
[Ruby] 暴想: Rubyでexitの挙動をテストする方法 - Don'tStopMusic (2007-09-01)
あー、例が悪かった。
実際にテストしたかったのはdieメソッド中でexit以外に行っている処理の実行内容。
def die
hogehoge
.....
exit(1)
end
もちろん、exitだけさせるメソッドは作ったりしないから、プログラムの後始末をして、最後に終了させる。例えば、処理で使っていた一時ファイルの削除とか、ログへの書き出しとか。その後始末がちゃんとできているかどうかをテストしたいけど、exitが含まれているとうまくいかないから、という感じ。
begin
die
rescue SystemExit => e
# hogehogeがうまく動作しているかをチェック
end
| 固定リンク
「ruby」カテゴリの記事
- senna(tritonn)で大文字小文字、全角半角を無視して検索できるようにする方法(2009.06.04)
- AmchartsをRubyで使うときの便利なRailsのPlugin(ラッパー):Ambling(2009.05.20)
- Rubyで任意の場所にあるlibディレクトリにpathを通してrequireでモジュール(ライブラリ)をロード(読み込める)できるようにする方法(2009.05.20)
- ruby gems で特定のライブラリの特定のバージョンだけをアンインストール(uninstall)する方法(2009.04.21)
- feedtools0.2.27以降は日本語文字化け(2009.04.21)

コメント