Skip to main content

Testing Times & Dates with Rails

Episode 320 · November 20, 2019

Rails provides several helper methods for testing times and dates in your applications. You can now freeze time and time travel like in the movies!


Testing times and dates can be particularly tricky. Time always keeps ticking forward and dealing with timezones and other things can be a huge pain.

Rails provides some tools for helping test times and dates. Timecop is a popular gem you might have heard of or used in the past, but Rails actually comes with some built-in helpers.

The easiest place to start is to use the "freeze_time" method. It simply stubs out the,, and methods with the current time. It will continue to return the exact same time until you call "unfreeze_time".

The "travel" and "travel_to" helpers can freeze time to a specific time in the past or future. They can also accept a block to have time frozen only within the block.

After your tests, the stubs will be cleared out automatically so you don't have to worry about time changes affecting other tests.

If you're testing things like trials, calendar events, or other date and time calculations, these tools are invaluable for making sure your code works as expected.



Earn a free month


Subscribe to the newsletter

Join 31,353+ developers who get early access to new screencasts, articles, guides, updates, and more.

    By clicking this button, you agree to the GoRails Terms of Service and Privacy Policy.

    More of a social being? We're also on Twitter and YouTube.