長い間、私はこの問題を抱えていました。その日の特定の時間に、私のテストのトンが壊れてしまいました。私は単純な日付比較をしている多くのテストをしており、すべてが深夜から午後4時のようにうまく動作します。なぜこれが起こっているのか?自分のタイムゾーンも自分の環境ファイルに設定しました。時間関連のユニットテストが毎日午後4時に中断するのはなぜですか?
5.days.from_now.to_dateのような私の呼び出しのいくつかは余分な日を追加しているようです。
編集例えば
、このテストは失敗します。
は# Widget that creates items for how many days the trip is gone.
def test_should_create_correct_amount_of_days_for_trip
w = DayWidget.create(:trip => trips(:hawaii))
assert_equal w.days.size, 5
end
# Code in trip model that calculates amount of days
def number_of_days
(self.return_date.to_date - self.depart_date.to_date).to_i + 1
end
# Test fixture yaml for Hawaii
hawaii:
depart_date: <%= Time.now.tomorrow.to_s(:db) %>
return_date: <%= 5.days.from_now.to_s(:db) %>
午後4:00後、試験は上記失敗し、それが作成したと言う6日間の代わりに、5 :(
ええ、すべてが正しく比較されているようです。私はちょうど例を示すために自分の投稿を編集しました。ありがとう – CalebHC
私の更新された答えを見てください... 'Time.now'は' 5days.from_now'とはまったく異なるクラスタイプを返します。 –
ありがとうございました!これは私のコードでは間違いなく問題でした。私はオブジェクトが返されていたときとは別のことを知らなかった。問題は今、私がコードベースに時間と空間のオブジェクトが混在していることです(Time.nowと1.day.ago)。私は一貫性のために毎回オブジェクトに.utcを適用するか、それとも過剰なものですか? – CalebHC