There's an echo in my head

日々のメモ。

コマンドラインツールの~/.hogercのテストはrubygemsが参考になる

rails-erdに~/.erdconfigという設定ファイルを作ろうとしたときrubygemsGem::ConfigFileの実装とテストが参考になった。

特に参考になったのはテスト用の設定ファイルの準備。

テストしたいときには自分で使ってる実際の~/.hogercを読み込みたくない。ではどうするかというと、設定ファイルのパス(~/.hogerc)はベタ書きを避けて定数で書いておき、テストを実行する前にremove_constconst_setでそれをテスト用のファイルに上書きするのである。

そしてほかのテスト項目ではデフォルトの設定を前提としていることもあるから、

  • test_helperやspec_helperなどで、全体としてはデフォルトの設定が有効になるように設定ファイルのパスを上書きしておき、
  • 設定ファイルによる挙動の変化を見る部分では、setupやbeforeでさらに個別の設定ファイルへと書き換えを行う

という2段構えで上書きをすることになる。

ちなみにクラス変数とかクラスのインスタンス変数でもいいんだけど、そんな書き換えるようなものでもないからここでは定数とした。

あと、rubygemsはおざなりになりがちなWindowsへの対応もキッチリやっているので、そこらへんも参考になる。

このブログに出てくるコードスニペッツは、引用あるいは断りがない限りMITライセンスです。