0

Timecop 0.6.1 と Ruby 2.0.0 を使用すると、この仕様が失敗する理由を誰か提案できますか?

(Timecop 0.4.5 と 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

結果は次のとおりです。

$ 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
4

3 に答える 3

1

Timecop の GitHub Repoには、これに対する非常に明確で簡潔な回答 (およびそれを修正するためのプル リクエスト) があります。

簡単な回答: Ruby や Timecop のバージョンの変更ではなく、 Bundler のバージョンの変更が問題の原因でした。

短い解決策require 'date':一番上(の前)に追加しrequire 'timecop'ます。

@micahchalmerに感謝します:)

于 2013-05-12T16:05:22.047 に答える
0

次のパスは、Date.todayサポートが廃止されたように見えますTime.now.to_date

require 'timecop'
require 'spec_helper'

describe Class do
  it "freezes time" do
    Timecop.freeze Date.new(2012,7,1) do
      expect(Time.now.to_date).to eq(Date.new 2012,7,1)
    end
  end
end
于 2013-05-02T15:24:12.623 に答える