Why two Ruby Time objects are not equal, although they appear to be
So you are comparing two
Time objects in an RSpec example, and they are not equal, although they look equal:
expected: Tue May 01 21:59:59 UTC 2007, got: Tue May 01 21:59:59 UTC 2007 (using ==)
The reason for this is that
Time actually tracks fractions of a second, although
#to_s doesn't say so and even though you probably only care about seconds. This means that two consecutive calls of
Time.now probably return two inequal values.
Consider freezing time in your tests so it is not dependent on the speed of the executing PC:
Timecop.freeze(Time.now.round) do time1 = ... time2 = ... expect(time1).to eq(time2) end
Time with a method
#end_of_day which returns the latest possible
Time on the same day. The exact value for this is
23:59:59.999999 in Ruby 1.8 and
23:59:59.999999999 in Ruby 1.9.