Test::MockTime使うとき
use Test::MockTime; sub fixed_time { my ($time, $func) = @_; Test::MockTime::set_fixed_time($time, "%Y-%m-%d %H:%M:%S"); $func->(); Test::MockTime::restore_time(); } fixed_time '2012-01-01 00:00:00' => sub { #something };
時刻のテストを書くときはTest::MockTimeを使うが止めて戻してと繰り返しやってると煩雑でわかりづらくなるのでこんな関数を作ると明示的で分かりやすいと思った。後、DateTimeとかTime::Pieceの前にTest::MockTimeをuseしてなくてはまったりした。