Art*_*huk 16 ruby rspec ruby-on-rails
如何测试日期以查看它是否在两个日期之间?我知道我可以进行两次大于和小于比较,但我想要一种RSpec方法来检查日期的"好坏".
例如:
it "is between the time range" do
expect(Date.now).to be_between(Date.yesterday, Date.tomorrow)
end
Run Code Online (Sandbox Code Playgroud)
我试过expect(range).to cover(subject)但没有运气.
spu*_*len 23
Date.today.should be_between(Date.today - 1.day, Date.today + 1.day)
Aar*_*n K 10
您编写的两种语法都是正确的RSpec:
it 'is between the time range' do
expect(Date.today).to be_between(Date.yesterday, Date.tomorrow)
end
it 'is between the time range' do
expect(Date.yesterday..Date.tomorrow).to cover Date.today
end
Run Code Online (Sandbox Code Playgroud)
如果您不使用Rails,您将不会拥有Date::yesterday或Date::tomorrow定义.您需要手动调整它:
it 'is between the time range' do
expect(Date.today).to be_between(Date.today - 1, Date.today + 1)
end
Run Code Online (Sandbox Code Playgroud)
第一个版本的工作原因是RSpec的内置谓词匹配器.这个匹配器理解在对象上定义的方法,并委托它们以及可能的?版本.因为Date,谓词Date#between?来自包括Comparable(见链接).
第二个版本有效,因为RSpec定义了封面匹配器.