我正在爲Rails應用程序編寫非常標準的RSpec控制器測試。我遇到的一個問題是簡單地測試時間值是否在更新操作中持續存在。Rails 4/RSpec - 測試時間值持續到控制器規格中的MYSQL數據庫
在我的控制,我有:
def update
if @derp.update_attributes(derp_params)
redirect_to @derp, flash: {success: "Updated derp successfully."}
else
render :edit
end
end
@derp有型時間的屬性。我可以測試所有的更新操作的其它屬性如下:
describe "PATCH #update" do
before do
@attr = {
attribute_1: 5, attribute_2: 6, attribute_3: 7,
time: Time.zone.now
}
end
end
我得到的錯誤是:
1) DerpsController logged in PATCH #update updates the derps's attributes
Failure/Error: expect(derp.time).to eq(@attr[:time])
expected: 2015-08-24 18:30:32.096943000 -0400
got: 2000-01-01 18:30:32.000000000 +0000
(compared using ==)
Diff:
@@ -1,2 +1,2 @@
-2015-08-24 18:30:32 -0400
+2000-01-01 18:30:32 UTC
我使用時空特警試圖也用to_s比較或to_i ...但是數據類型時間的每個屬性都會在今年完全關閉。我見過一些帖子,說你如何期待它在1秒之內,以及如何處理,但看起來我的一年完全沒有了?
這不是那麼困難 - 我只是想測試控制器可以花一些時間發送給它並將其保存到數據庫。
我在這裏錯過了什麼?
編輯:幾天後沒有幫助。讓我嘗試重新發生所發生的事情 - 日期被剝離,因爲它是一個MYSQL類型的TIME。注意2000-01-01 ...
這仍然不適合我: 預計:2015-04-20 16:20:08.000000000 -0400 得到:2000-01-01 16:20:08.000000000 +0000 – gregblass