RSpec测试时间对象

时间:2017-02-03 20:33:41

标签: 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

有没有人对测试时间有任何建议,以便稍微抵消不会导致测试失败?

2 个答案:

答案 0 :(得分:2)

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

expect(@model.end_date).to be_within(1.second).of(end_date)

答案 1 :(得分:0)

我会离开 {Id:1 Name:Marwan Career:{Employer:mycompany Salary:100}} 方法,但使用 Timecop - https://www.rubydoc.info/gems/liangzan-timecop/Timecop.freeze 冻结规范的时间。使用 eq 并不能保证规范会通过。