0

我有一个带有 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")
4

2 回答 2

0

有一些方法可以从 Date 对象中提取日期部分。date 类还有一些常量数组,可以很容易地将诸如月份和星期几之类的东西转换成英文版本。

因此:

Date.today.day 
=> 13
Date::MONTHNAMES[Date.today.month] 
=> "July"
Date.today.year 
=> 2012

所有这些都在 Date 的文档中,位于此处

于 2012-07-13T17:55:32.120 回答
0

您可以考虑使用timecop来冻结当前日期。稍后在测试处理“今天”或“从今天起一周”的其他方法时,这会派上用场

before { Timecop.freeze(Date.parse("Jul 13 2012") }
after { Timecop.return }

现在您可以select("13", :from => "visit_visit_date_3i")并且它适用于运行测试的任何日期。

于 2012-07-13T20:35:43.557 回答