Using Time Travel To Unit Test Time-based Data
DZone's Guide to
Using Time Travel To Unit Test Time-based Data
Join the DZone community and get the full member experience.
Join For FreeSearching for a way to test time-based data in ruby, I came across an excellent suggestion from Rick Olson (technoweenie). I've cleaned it a little to make it clearer to read, but the main credit should go to Rick.
class << Time
unless method_defined? :now_before_time_travel
alias_method :now_before_time_travel, :now
end
def now
@now || now_before_time_travel
end
def travel_to(time, █)
@now = time
block.call
ensure
@now = nil
end
end
def test_something_involving_time
account = Time.travel_to(creation_time = Time.now) do
Account.new
end
assert_equal creation_time, account.creation_time
end
Topics:
Opinions expressed by DZone contributors are their own.
{{ parent.title || parent.header.title}}
{{ parent.tldr }}
{{ parent.linkDescription }}
{{ parent.urlSource.name }}