Кто-нибудь знает какие-нибудь хорошие методы для преобразования базы данных? записи в XML?
Т.е. end_date = start_date + goal_months.months Затем я клонирую ...
Я работаю с Time in Rails и использую следующий код для установки даты начала и окончания проекта:
start_date ||= Time.now
end_date = start_date + goal_months.months
Затем я клонирую объект и я пишу тесты rspec, чтобы подтвердить, что атрибуты совпадают в копии. Конечные даты совпадают:
original[end_date]: 2011-08-24 18:24:53 UTC
clone[end_date]: 2011-08-24 18:24:53 UTC
, но спецификация дает мне ошибку в начальных датах:
expected: Wed Aug 24 18:24:53 UTC 2011,
got: Wed, 24 Aug 2011 18:24:53 UTC +00:00 (using ==)
Ясно, что даты совпадают, просто отформатированы по-разному. Как получается, что они по-разному хранятся в базе данных, и как мне их сопоставить? Я также пробовал использовать DateTime с теми же результатами.
Исправление: Конечные даты тоже не совпадают. Они распечатывают то же самое, но и ошибки rspec на них. Когда я распечатываю дату начала и дату окончания, значения выходят в разных форматах:
start date: 2010-08-24T19:00:24+00:00
end date: 2011-08-24 19:00:24 UTC
Вы должны издеваться над методом времени «now», чтобы убедиться, что он всегда соответствует дате в спецификации. Вы никогда не знаете, когда задержка приведет к сбою спецификации из-за нескольких миллисекунд. Такой подход также гарантирует, что время реального кода и спецификации будет одинаковым.
Если вы используете фиктивную библиотеку rspec по умолчанию, попробуйте сделать что-нибудь вроде:
t = Time.parse("01/01/2010 10:00")
Time.should_receive(:now).and_return(t)
Я предполагаю, что значение Time.now отформатировано иначе, чем значение в вашей базе данных.
Вы уверены, что используете ==
, а не eql
или быть
? Последние два метода используют идентификацию объекта, а не сравнивают значения.
Из выходных данных похоже, что ожидаемое значение - это Time
, а тестируемое значение - DateTime
. Это тоже может быть проблемой, хотя я не решаюсь угадать, как это исправить, учитывая почти патологический характер библиотек даты и времени Ruby ...