中に一致しない?(user_obj.updated_at)current_updated_time.eql場合updated_atの時間は、RSpecのユニットテストの比較です
更新操作をしながら、私たちはupdated_atのを比較しているされています。 rspecの実行時間と時間帯が正しく一致していません。
中に一致しない?(user_obj.updated_at)current_updated_time.eql場合updated_atの時間は、RSpecのユニットテストの比較です
更新操作をしながら、私たちはupdated_atのを比較しているされています。 rspecの実行時間と時間帯が正しく一致していません。
これはスイートのテストでよく見られる問題です。幸いなことに、共通の解決策があります。
比較されたタイムスタンプからマイクロ秒をトリミングすることができます(RDBMSのベンダーとホストアプリケーションの言語ができるだけ微妙な時間で多少異なる場合があるため)。
timecop gemを試すと、これらの詳細を処理するのに役立ちます。基本的に現在の時刻をフリーズしたり、関連するデータや比較値を作成したり、それらの値を期待通りに使うことができます。
最後に、正しいタイムゾーンと日付または時刻のデータ型を比較していることを確認してください。 RubyのTimeクラスとDateクラスのドキュメントや、Railsを使用している場合は、TimeWithZoneクラスのドキュメントを参照してください。時間帯の比較の間で問題を経験するのは非常に一般的です。したがって、これらの比較に常に一貫性のあるデータ型を使用する必要があります(Date.today
をTime.now
または1.day.ago
と比較しないでください)。このテーマには多くのブログ記事がありますので、RubyのTime値の比較についてお読みください。
これは、Rubyコンソールを開いて、時間値を生成するためのさまざまな方法論を試してみると、GMTなどを使用する現在のシステムタイムゾーンにどの表現がデフォルトになるのかを感じることができます。テストスイート全体で時間値を生成するために、一貫したデータ型とパターン(つまり、同じタイムゾーン)を使用してください。