RSpec 测试时间对象
RSpec testing Time objects
我的时间规格不合格。
我知道时间是从纪元算起的秒数,但如果对象表示足够接近,我希望这个规范能够通过。
例如:
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
有没有人对测试时间有什么建议,这样轻微的偏移就不会导致测试失败?
你可以使用RSpec的built-inbe_within
matcher,它也可以用于浮点数和其他容易出现细微差异的数据类型:
expect(@model.end_date).to be_within(1.second).of(end_date)
我会离开 eq
方法,但会使用 Timecop - https://www.rubydoc.info/gems/liangzan-timecop/Timecop.freeze 冻结规范的时间。使用 be_within
并不能保证规范会通过。
我的时间规格不合格。
我知道时间是从纪元算起的秒数,但如果对象表示足够接近,我希望这个规范能够通过。
例如:
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
有没有人对测试时间有什么建议,这样轻微的偏移就不会导致测试失败?
你可以使用RSpec的built-inbe_within
matcher,它也可以用于浮点数和其他容易出现细微差异的数据类型:
expect(@model.end_date).to be_within(1.second).of(end_date)
我会离开 eq
方法,但会使用 Timecop - https://www.rubydoc.info/gems/liangzan-timecop/Timecop.freeze 冻结规范的时间。使用 be_within
并不能保证规范会通过。