2014-09-28 45 views
0

我有一個頁面可以創建文檔的快照。例如,該文檔以標題爲時間戳(September 27, 2014 at 4:01:10 pm)保存。我正在爲此頁面撰寫測試,並希望將時間存根以便不會更改。在水豚測試中存留時間

我目前所面對的是Time.stubs(:now).returns(Time.parse("2014-1-2 11:00:00"))但是當我做,我得到一個錯誤信息說:

水豚:: FrozenInTime:出現時間被凍結,水豚不與圖書館工作,其凍結時間,考慮用時間旅行代替

什麼是最好的方法來停留在這裏?

+2

你可能要檢查出'timecop'寶石:https://github.com/travisjeffery/timecop – sjaime 2014-09-28 19:20:36

+0

@sjaime如果你將發佈作爲答案,我會選擇它。這是超級有用的! – Zack 2014-09-28 20:42:55

回答

1

我在這裏重新發布我的評論作爲答案。

還有就是timecop寶石https://github.com/travisjeffery/timecop

它可以讓你不喜歡的東西如下:

describe "some set of tests to mock" do 
    before do 
    Timecop.freeze(Time.local(1990)) 
    end 

    after do 
    Timecop.return 
    end 

it "should do blah blah blah" {} 
end 

這將使運行,如果它是1990年1月1日的測試,然後恢復到當前時間。現在includes support

0

Rails的直接時間旅行,如:

feature 'Time travel verifier' do 
    include ActiveSupport::Testing::TimeHelpers 

    scenario 'works in the past' do 
    travel_to(1.day.ago) do 
     visit time_travel_verification_path 
     expect(page).to have_content('WOAH Time Travel!') 
    end 
    end 
end