В моей спецификации мне нужно проверить, правильно ли строки конвертируются в другие типы. Среди них Time
, Date
и DateTime
.
Тесты отлично работают со всеми типами, включая Date
, но не проходят, если задействовано Time
:
let(:type) { DateTime }
let(:date_time) { type.now }
let(:params) { [ date_time.to_s ] }
it 'should convert the parameters to dates/times' do
# converted basically calls params.map { |param| type.parse param }
converted.should == [date_time]
end
Это на самом деле почти работает:
expected: [#<DateTime: 2012-01-17T15:03:27-02:00 ((2455944j,61407s,568873440n),-7200s,2299161j)>]
got: [#<DateTime: 2012-01-17T15:03:27-02:00 ((2455944j,61407s,0n),-7200s,2299161j)>] (using ==)
Разница отключена только одним значением, но я не знаю, что именно это означает. Результат теста Time
еще более запутанный:
expected: [2012-01-17 15:03:27 -0200]
got: [2012-01-17 15:03:27 -0200] (using ==)
Единственными различиями между тестами являются тип и описание. После некоторой трассировки мне кажется, что проанализированные времена не имеют микросекундной точности; usec
всегда возвращает 0.
Какие-нибудь советы о том, как заставить эти спецификации пройти?