Time.is - ザ・ワールド!時よ止まれ
http://blog.jayfields.com/2007/11/ruby-timeis.html
Time.nowがからむテストを書くのはとても難しい。時はすでに進んでいるから、単純な文字列比較とかではテストは書けない。だったらどうするか?時を止めるのだ!
Time.is(Time.now) do # ザ・ワールド!時よ止まれ Time.now # => Thu Oct 05 00:00:00 -0400 2006 sleep 2 Time.now # => Thu Oct 05 00:00:00 -0400 2006 end # そして時は動き出す
Time.isは時刻を固定して、Time.nowがその時刻を返すように偽装する仕組み。ブロック中は偽装が働き、ブロックを抜けたらTime.nowは通常動作に戻る。
彼のブログは読んでてとてもおもしろいw英語だけど。