Rails: Timecopを使わなくても時間を止められた話

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

おたより発掘

デザインも頼めるシステム開発会社をお探しならBPS株式会社までどうぞ 開発エンジニア積極採用中です! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

penguin10

penguin10の書いた記事

BPSアドベントカレンダー

週刊Railsウォッチ

インフラ

ActiveSupport探訪シリーズ