16
10

More than 3 years have passed since last update.

Railsのtravel_toについてまとめた

Last updated at Posted at 2020-03-16

はじめに

日付関係のテストをしていたときに、travel_toを使うといいと教えてもらいました。
今回は、travel_toメソッドについてまとめていきます。

travel_toとは

ActiveSupport :: Testing :: TimeHelpersのメソッドの一つです。

変更したい日時を渡すと、Time.nowDate.todayDateTime.nowで返される日時を変更することができます。

コード例

travel_to doendで囲まれた部分の中だけ、時間が変更されています。
コメント文のとおりに出力されました。

it 'puts date and time' do
  travel_to Time.zone.local(2020, 03, 16) do
    pp Date.today   # -> Mon, 16 Mar 2020
    pp Time.now     # -> 2020-03-15 15:00:00 +0000
    pp DateTime.now # -> Mon, 16 Mar 2020 00:00:00 +0900
  end
end

SyntaxError

Time.zone.local08または09を渡すと、Invalid octal digitでエラーとなります。
そういうときは、下の例のように0をつけずに渡してあげればOKです。

travel_to Time.zone.local(2020, 8, 16) do

end

参考

ActiveSupport::Testing::TimeHelpers

ActiveSupport :: Testing :: TimeHelpersには他にもメソッドがあるので参考にしてみてください!

16
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
10