У меня есть тест в наборе тестов Rails 3, который делает ряд утверждений, которые сравнивают временные метки, которые проходят на моей локальной машине, но не выполняются в нашем конвейере CI.Этот тест сохраняет временную метку в поле временной метки базы данных Postgres с точностью до 6 и сравнивает сохраненное значение с исходной временной меткой, очень похоже на следующий пример:
tmp_time = Time.zone.now
u = User.find(1)
u.updated_at = tmp_time
u.save!
u.reload
assert_equal u.updated_at.to_i, tmp_time.to_i # passes...
assert_equal u.updated_at, tmp_time # fails...
assert_equal u.updated_at.to_f, tmp_time.to_f # fails...
Я полагаю, что проблема связана со временем Рубипредставление имеет более высокую точность, чем сохраненное значение.
Каков наилучший способ компенсации незначительной разницы в значениях из-за точности, помимо того, что он является менее точным при сравнении?Мы рассмотрели переопределение Time.zone.now, но считаем, что это приведет к проблемам в нисходящем направлении.
Заранее спасибо.