I’m currently working on an API for Vquence’s VQdata product which allows our customers to use a REST interface to retrieve videos with certain keywords they have previously stored. While writing tests I need to be able to mock out the Time object so that my tests were deterministic relative to time.
Delorean easily allows you to mock time in your tests. In no time I had hooked it up to cucumber.
require 'delorean' # Make sure we fix the time up after each scenario After do Delorean.back_to_the_present end
and then in features/step_definitions/delorean_steps.rb
Given /^I time travel to (.+)$/ do |period| Delorean.time_travel_to(period) end
this lets me create steps like
Scenario: Link attributes are correct for yesterday Given I time travel to 2010-02-01 05:00 When I GET the videos keywords feeds page Then I should see "start_time=2010-02-01T00:00:00"
Some other examples you can use with Delorean are
- 2 weeks ago
- next tuesday 5pm
You can find more examples in the Chronic gem documentation which Delorean uses to achieve this functionality.