[Ruby on Rails]Date.todayとかを使っている箇所をテストする方法

2012年1月4日

日時によって表示項目を制御したりする場合に、よくDate.todayとかDateTime.nowとかを使ったりすると思うが

このシステム日時を取得している場所のテストをうまく実行したい場合に役に立つプラグインが

Timecop

です。

ようは、Date.todayとかで返ってくる日時を固定してしまうというプラグイン。

インストールは

Rails2.*系であれば、config/environments/test.rbあたりに

[text]config.gem 'timecop’, :version => '= 0.3.4′[/text]

を追加し、rake gems:installを実行

テストケースでは

たとえば、2011年10月04日に固定したい場合には

[ruby]Timecop.travel(Date.new(2011,10,4))[/ruby]

とすると、これ以降、Date.todayは2011年10月04日を返すようになる。

日付の固定を解除したい場合は

[ruby]Timecop.return[/ruby]

を実行する