知らなかったので備忘録です。
Overview
go-cmp を使用して DB の Insert のテストを記述するとき time.Now() を使ってしまうと生成したデータと比較対象のデータでレコードの作成時刻( created_at
)で誤差レベルの Diff が生じてしまいます。
※ 生成時刻の time.Now() と比較したい対象(Goでは慣習的に want
を使うことが多い)が生成されるタイミングの time.Now() で Call されるタイミングが微妙に異なるから(と言っても ns, ms レベル)
どうやるのか
以下の zenn のエントリに書いてあるとおりなのですが、go-cmp の cmpopts.EquateApproxTime という option を利用します。
option の引数に指定した duration の分は誤差が合っても同じものとして判定される( Diff の判定をゆるくする)ので Insert や Update のテストで利用することができます。