我有一个带有date_select的表单,显示3个日期,月份和年份的选择框。我有一个rspec集成测试,我想用capybara选择今天的日期。所以我必须把Date.today分成一天,一个月和一年。这样做的好方法是什么?我可以做一些字符串拆分,但也许有更复杂的方法吗?
在这里,您可以看到用于选择硬编码日期的水豚代码:
select("13", :from => "visit_visit_date_3i")
select("July", :from => "visit_visit_date_2i")
select("2012", :from => "visit_visit_date_1i")
答案 0 :(得分:0)
有一些方法可以从Date对象中提取日期部分。日期类还有一些常量数组,可以很容易地将诸如一周中的几天和几天的内容转换为英文版本。
因此:
Date.today.day
=> 13
Date::MONTHNAMES[Date.today.month]
=> "July"
Date.today.year
=> 2012
所有这些都在Date的文档中,位于here。
答案 1 :(得分:0)
您可以考虑使用timecop冻结当前日期。在测试其他方法是否处理“今天”或“今天一周”
时,这会派上用场before { Timecop.freeze(Date.parse("Jul 13 2012") }
after { Timecop.return }
现在你可以select("13", :from => "visit_visit_date_3i")
,它将适用于运行测试的任何日期。