在rspec中,我們希望檢查發票控制器中的更新是否更新了日期字段。下面是代碼:爲什麼rspec在rails 3.1.0中有一天的差異?
it "should have corp head id and approve date" do
cust = Factory(:customer)
u = Factory(:user)
rfq = Factory(:rfq, :sales_id => u.id, :customer_id => cust.id, :sales_id => u.id)
q = Factory(:quote, :rfq_id => rfq.id)
i = Factory(:invoice, :quote_id => q.id, :approved_by_corp_head => nil)
session[:corp_head] = true
session[:user_id] = u.id
get 'update', :id => i.id, :quote_id => q.id, :invoice => {:paid_out => true, :approved_by_corp_head => true}
i.reload.corp_head_id.should == u.id
i.reload.approve_date_corp_head.strftime("%Y/%m/%d").should == Time.now.strftime("%Y/%m/%d")
end
在發票控制器,有一行記錄Time.now:
invoice.approve_date_corp_head = Time.now
奇怪的是,有時線i.reload.approve_date_corp_head.strftime("%Y/%m/%d").should == Time.now.strftime("%Y/%m/%d")
將失敗說,有一天區別日期比較。看起來,當我們晚上晚些時候運行rspec時(在早上12點之前),線路會失敗。我們在凌晨一直沒有看到失敗。
任何人都有關於這種奇怪行爲的想法?非常感謝。
哪個時區你來自哪裏? – uday 2012-02-19 18:29:49
美國中部時間。 – user938363 2012-02-19 18:37:18
這是因爲區域中的時間差異,請使用'offset'和'Time.now'以使'Time.now'獲得您所在時區的時間。 – uday 2012-02-19 18:38:02