Skip to main content
Testing:

Testing Times & Dates with Rails

6

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


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 Time.now, DateTime.now, and Date.today 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.

Resources

Transcripts

No transcripts available. Earn a free month

Loading...

Subscribe to the newsletter

Join 27,623+ 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.