[解決済み] RSpecでの時間比較の問題
2022-06-01 16:35:33
質問
Ruby on Rails 4とrspec-rails gem 2.14を使用しています。あるオブジェクトについて、現在の時刻を
updated_at
オブジェクトの属性を比較したいのですが、specが通らないので困っています。つまり、以下がspecのコードであることを考えると。
it "updates updated_at attribute" do
Timecop.freeze
patch :update
@article.reload
expect(@article.updated_at).to eq(Time.now)
end
上記のspecを実行すると、以下のエラーが発生します。
Failure/Error: expect(@article.updated_at).to eq(Time.now)
expected: 2013-12-05 14:42:20 UTC
got: Thu, 05 Dec 2013 08:42:20 CST -06:00
(compared using ==)
どうすればspecが通るようになりますか?
ノート
: 次のようなものも試してみました。
utc
の追加に注意)。
it "updates updated_at attribute" do
Timecop.freeze
patch :update
@article.reload
expect(@article.updated_at.utc).to eq(Time.now)
end
を追加しましたが、この仕様はまだ通過しません ("got" の値の違いに注意してください)。
Failure/Error: expect(@article.updated_at.utc).to eq(Time.now)
expected: 2013-12-05 14:42:20 UTC
got: 2013-12-05 14:42:20 UTC
(compared using ==)
どのように解決するのですか?
RubyのTimeオブジェクトは、データベースよりも高い精度を保っています。 データベースから値を読み出すと、マイクロ秒の精度しか保たれませんが、インメモリ表現ではナノ秒の精度が保たれます。
もしミリ秒の差を気にしないのであれば、期待値の両側でto_s/to_iを行うことができます。
expect(@article.updated_at.utc.to_s).to eq(Time.now.to_s)
または
expect(@article.updated_at.utc.to_i).to eq(Time.now.to_i)
参照先 この を参照してください。
関連
-
[解決済み] Railsです。gemを使った特定バージョンのライブラリのアンインストール
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] time(1) の出力における 'real', 'user' および 'sys' はどのような意味ですか?
-
[解決済み] C#で相対時間を計算する
-
[解決済み] JavaScriptでUnixのタイムスタンプを時刻に変換する
-
[解決済み] Pythonプログラムの実行時間を取得するにはどうしたらいいですか?
-
[解決済み] と'is'のどちらかを使って文字列を比較すると、異なる結果になることがあるのはなぜですか?
-
[解決済み] Androidで現在の時刻と日付を取得する方法
-
[解決済み] JavaScriptで時刻を比較せず、日付部分だけを比較する。
-
[解決済み] RSpecのlet()はいつ使うのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Rails。Ruby on Railsの移行でデータベースカラムの名前を変更するにはどうすればよいですか?
-
[解決済み】ActionController::InvalidAuthenticityTokenについて
-
[解決済み】Webpacker::Manifest::MissingEntryError【クローズド
-
[解決済み] pg gem をインストールしようとすると 'libpq-fe.h' ヘッダが見つからない
-
[解決済み】PG::ConnectionBad: fe_sendauth: パスワードが供給されない
-
[解決済み] erbでコメントを追加する最適な方法
-
[解決済み] rspec 3 - クラスメソッドをスタブ化する
-
[解決済み] PG::ConnectionBad - サーバーに接続できませんでした。接続が拒否されました。
-
[解決済み] Paramが無いか、値が空である。ParameterMissing in ResultsController#update
-
[解決済み] railsでhidden fieldタグを使用する方法