2016-11-21 3 views

ответ

0

Это обычная проблема при тестировании наборов, и, к счастью, существуют общие решения.

Вы можете попробовать обрезать микросекунды с сопоставленных временных меток (так как возможно, ваш поставщик RDBMS и ваш язык приложения-хоста отличаются друг от друга в самые мельчайшие измерения времени).

Вы можете попробовать использовать timecop gem, что поможет справиться с этими деталями. Вы можете существенно заморозить текущее время, создать любые связанные с временем данные или сравнительные значения и использовать эти значения для своих ожиданий.

И наконец, убедитесь, что вы сравниваете правильные временные метки и типы данных даты или времени. Возможно, вы захотите изучить документацию для классов времени и даты Ruby, и если вы используете Rails, класс TimeWithZone. Его очень часто встречают проблемы между сопоставлениями часового пояса, поэтому вы хотите всегда использовать согласованный тип данных для этих сравнений (т. Е. Не сравнивать Date.today с Time.now или с 1.day.ago, так как все они могут использовать разные часовые пояса). На эту тему есть множество блог-постов, поэтому я рекомендую вам прочитать о сравнении значений времени в Ruby.

Это может помочь открыть консоль Ruby и поэкспериментировать с различными методологиями для создания значений времени, чтобы вы почувствовали, какое выражение по умолчанию будет использовать текущий часовой пояс системы, который будет использовать GMT и т. Д. В конечном итоге сделайте убедитесь, что вы используете один согласованный тип данных и шаблон (т. е. тот же часовой пояс) для создания значений времени в вашем тестовом наборе.

Смежные вопросы