Timecopを使わなくても時間を止められた話
テストで時間を止めたい時、Timecopを使わないと止められないと思っていましたが、Rails4.1以降は標準のActiveSupport::Testing::TimeHelpers
でも止められると最近知りました。
1. Timecopを使った場合
- 1ヶ月前の時刻で固定する。
Timecop.freeze(Time.current.prev_month)
2. ActiveSupport::Testing::TimeHelpers
を使った場合
1ヶ月前の時刻で固定する。
travel_to(Time.current.prev_month)
元の時刻に戻す
travel_back
現在時刻で固定する
freeze_time
編集部注(2025/09/08)
Rails 8.1でfreeze_time
に日付や時刻を渡せるようになります(#54303)。
更新情報