Never been to DZone Snippets before?

Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world

About this user

Tom Ward

« Newer Snippets
Older Snippets »
Showing 1-1 of 1 total  RSS 

Using time travel to unit test time-based data

Searching 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, &block)
    @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
« Newer Snippets
Older Snippets »
Showing 1-1 of 1 total  RSS