7

使用时,我的功能测试出现错误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>.

请注意,两者显示相同的时间和时区。我检查了它们是相同的类类型(ActiveSupport::TimeWithZone)。那为什么他们不相等呢?

它是数据库中的标准 DateTime 字段,我认为它只存储到第二个吧?

我可以通过将它们转换为整数或使用assert_in_delta1 分钟的范围来让它通过。但只是想知道。

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

4

1 回答 1

10

我也遇到了同样的错误。看起来这是在 2009 年报道的

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

建议的解决方案对我有用:

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

于 2011-04-06T15:31:15.203 回答