RSpec 测试 Time 对象

fbe*_*ger 2 ruby-on-rails rspec-rails

我的时间相关规格不合格。

我知道时间是从纪元开始计算的,但如果对象表示足够接近,我希望这个规范能够通过。

例如:

expect( @model.end_date ).to eq end_date

expected: Wed, 08 Feb 2017 20:13:30 UTC +00:00
     got: Wed, 08 Feb 2017 20:13:30 UTC +00:00
Run Code Online (Sandbox Code Playgroud)

有人对测试时间有什么建议,这样轻微的偏移就不会导致测试失败吗?

Rob*_*bel 6

您可以使用 RSpec 的内置be_within匹配器,它也可用于浮点数和其他容易出现轻微差异的数据类型:

expect(@model.end_date).to be_within(1.second).of(end_date)
Run Code Online (Sandbox Code Playgroud)