Ruby on Rails 4 ve rspec-rails gem 2.14 kullanıyorum. Bir nesnem için, updated_at
bir denetleyici eylemi çalıştırıldıktan sonra geçerli saati nesne özniteliğiyle karşılaştırmak istiyorum , ancak teknik özellik geçmediği için başım belada. Yani, aşağıdaki verilen özellik kodudur:
it "updates updated_at attribute" do
Timecop.freeze
patch :update
@article.reload
expect(@article.updated_at).to eq(Time.now)
end
Yukarıdaki özellikleri çalıştırdığımda aşağıdaki hatayı alıyorum:
Failure/Error: expect(@article.updated_at).to eq(Time.now)
expected: 2013-12-05 14:42:20 UTC
got: Thu, 05 Dec 2013 08:42:20 CST -06:00
(compared using ==)
Şartnamenin geçmesini nasıl sağlayabilirim?
Not : Aşağıdakileri de denedim (eklemeye dikkat edin utc
):
it "updates updated_at attribute" do
Timecop.freeze
patch :update
@article.reload
expect(@article.updated_at.utc).to eq(Time.now)
end
ancak teknik özellik hala geçmiyor ("var" değer farkına dikkat edin):
Failure/Error: expect(@article.updated_at.utc).to eq(Time.now)
expected: 2013-12-05 14:42:20 UTC
got: 2013-12-05 14:42:20 UTC
(compared using ==)
===
bunun yerine ==
- şu anda iki farklı Time nesnesinin object_id'sini karşılaştırıyorsunuz. Timecop veritabanı sunucusu zamanını dondurmasa da. . . bu nedenle, zaman damgalarınız RDBMS tarafından oluşturuluyorsa, işe yaramaz (bunun sizin için burada bir sorun olmadığını
===
, ancak bu, ikinci sınırları aşmaktan zarar görebilir. Muhtemelen en iyisi, epoch saniyelerine dönüştüğünüz ve küçük bir mutlak farka izin verdiğiniz kendi eşleştiricinizi bulmak veya yazmaktır.