Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails関連
  • 勉強会

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

更新情報

  • 2018/12/25: 初版公開
  • 2023/02/09: 細部を更新

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

テストで時間を止めたい時、Timecopを使わないと止められないと思っていましたが、Rails4.1以降は標準のActiveSupport::Testing::TimeHelpersでも止められると最近知りました。

travisjeffery/timecop - GitHub

1. Timecopを使った場合

  • 1ヶ月前の時刻で固定する。
Timecop.freeze(Time.current.prev_month)

2. ActiveSupport::Testing::TimeHelpersを使った場合

1ヶ月前の時刻で固定する。

travel_to(Time.current.prev_month)

元の時刻に戻す

travel_back

現在時刻で固定する

freeze_time

関連記事

PostgreSQLの現在時刻をフェイクする方法とRailsサンプルコード(翻訳)


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。