みなさん、 timecop 使ってますか?timecop は、テストで時間を扱う時に必須と言えるライブラリです。テスト中の時間を止めたり(Timecop.freeze)時間を移動させたり(Timecop.travel)できます。似たようなライブラリとして delorean があります。RailsCasts でも紹介されています。
さて、timecop の README には下記のようなコード例が書いてあります。
t = Time.local(2008, 9, 1, 10, 5, 0)
Timecop.travel(t)
僕はこれまで上記のように書くしか方法が無いと思っていたのですが、今日下記のようにも書けることに気づきました。
Timecop.travel(2008, 9, 1, 10, 5, 0)
また、ブロックを使うこともできます。
Timecop.travel(2008, 9, 1, 10, 5, 0) do
Time.now #=> 2008-09-01 10:05:00 +0900
end
Time.now #=> 2013-01-15 22:08:12 +0900
ちょっぴり便利ですね。ちなみにTimecop.freeze
も同様に使えます。rdoc をちゃんと読めば書いてある話なのですが、README 読むだけで普通に使うには十分なのでみんなきっとなかなか気づけないはず…。