LoginSignup
7
5

More than 5 years have passed since last update.

FactoryGirlで作ったデータで、時刻を比較すると一致しないことがある話

Posted at

時刻を比較したとき、一見すると、何が違っているか分からなくて悩んだので、書く。

describe Item do
  let!(:item) { create :item, created_at: 1.day.ago }
  it { expect(Item.first.created_at).to eq item.created_at }
end

1__tmux.png

原因はマイクロ秒

describe Item do
  let!(:item) { create :item, created_at: 1.day.ago }
  it { expect(Item.first.created_at.usec).to eq item.created_at.usec }
end

2__tmux.png

DB から取り出したときマイクロ秒は0になるが、
1.day.ago の時点では、マイクロ秒は維持されている。

to_s で渡すと良い。

直接SQLを使うときのように、文字列で渡すと上手くいった。

describe Item do
  let!(:item) { create :item, created_at: 1.day.ago.to_s }
  it { expect(Item.first.created_at).to eq item.created_at }
  it { expect(Item.first.created_at.usec).to eq item.created_at.usec }
end
7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5