Ruby on rails Rails断言不等于';我不总是使用DateTimes

Ruby on rails Rails断言不等于';我不总是使用DateTimes,ruby-on-rails,testing,minitest,Ruby On Rails,Testing,Minitest,使用assert_equal时,我在功能测试中出错: 1) [31mFailure[0m: test_should_allow_dealer_to_extend_offer:21 <Thu, 14 Apr 2011 23:59:59 PDT -07:00> expected but was <Thu, 14 Apr 2011 23:59:59 PDT -07:00>. 1)[31M故障[0m: 测试应允许经销商延长报价:21 预料之中,但事实并非如此 . 请注意,

使用
assert_equal
时,我在功能测试中出错:

  1) [31mFailure[0m:
test_should_allow_dealer_to_extend_offer:21
<Thu, 14 Apr 2011 23:59:59 PDT -07:00> expected but was
<Thu, 14 Apr 2011 23:59:59 PDT -07:00>.
1)[31M故障[0m:
测试应允许经销商延长报价:21
预料之中,但事实并非如此
.
请注意,这两者显示相同的时间和时区。我检查了它们,它们是相同的类类型(ActiveSupport::TimeWithZone)。那么为什么它们不相等呢

它是数据库中的一个标准日期时间字段,我想它只存储在第二个右下角

我可以通过将它们转换为整数或使用
assert\u in_delta
在1分钟的范围内使其通过


顺便说一句,这是Rails 2.3.8和MySQL。

我也遇到了同样的错误。看起来这是:

我以前在测试中见过这种情况——通常是由于数据库的时间分辨率与系统的时间分辨率不同。因此,尽管两次打印的时间相同,但其中一次实际上(例如)是15:45:32.012445362,DB加载回15:45:32,这两次比较并不相等

对我有效的建议解决方案是:

在测试中,您可以在比较之前尝试强制执行到a;在到a表示中不返回usec值: