rubyrspecruby-2.0timecop

Timecop and Ruby 2.0.0


Can anyone suggest why this spec fails using Timecop 0.6.1 and Ruby 2.0.0?

(It passes using Timecop 0.4.5 and Ruby 1.9.3)

require 'timecop'
require 'spec_helper'

describe Class do
  it "freezes time" do
    Timecop.freeze Date.new(2012,7,1) do
      expect(Date.today).to eq(Date.new 2012,7,1)
    end
  end
end

Which results in:

$ rspec spec/models/time_cop_spec.rb 

Failures:

  1) Class freezes time
     Failure/Error: expect(Date.today).to eq(Date.new 2012,7,1)

       expected: Sun, 01 Jul 2012
            got: Thu, 02 May 2013

       (compared using ==)

       Diff:
       @@ -1,2 +1,2 @@
       -Sun, 01 Jul 2012
       +Thu, 02 May 2013

Solution

  • There is a very clear and consise answer to this (and a pull request to fix it) on Timecop's GitHub Repo.

    Short answer: a change in Bundler version, not a change in Ruby or Timecop version, caused the issue.

    Short solution: Add require 'date' to the very top (before require 'timecop').

    Thanks to @micahchalmer :)