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>.

2 つが同じ時間とタイム ゾーンを示していることに注意してください。確認したところ、同じクラス タイプ (ActiveSupport::TimeWithZone) です。では、なぜそれらは等しくないのでしょうか?

これはデータベースの標準の DateTime フィールドですが、右から 2 番目までしか格納されていないと思いますか?

それらを整数に変換するかassert_in_delta、1分の範囲で使用することで、合格することができます。しかし、ただ疑問に思っていました。

ところで、これは Rails 2.3.8 と MySQL です。

4

1 に答える 1

10

私も同じエラーが発生しています。これは2009年に報告されたようです:

以前のテストでこれが発生するのを見たことがあります。通常、データベースの時間分解能がシステムとは異なることが原因です。したがって、2 つの時間は同じように出力されますが、1 つは実際には (たとえば) 15:45:32.012445362 であり、DB は 15:45:32 をロードしますが、これは等しいとは言えません。

私のために働いた提案された解決策:

テストでは、比較する前に to_a を強制してみることができます。usec 値は to_a 表現では返されません。

于 2011-04-06T15:31:15.203 に答える