我有一个Cucumber表,其中一个字段是我希望填充今天日期的日期。 有没有办法做到这一点,而无需硬编码今天的日期到表中?
基本上我想在表格中输入Time.now.strftime("%Y-%m-%d")
而不是让它破裂。
答案 0 :(得分:21)
由于您的步骤定义正在处理表,您可以在表中放置一个特殊的占位符,例如字符串“TODAYS_DATE”,然后使用map_column!
将列中的数据处理为你想要的格式。
例如,如下表所示
Given the following user records
| username | date |
| alice | 2001-01-01 |
| bob | TODAYS_DATE |
在您的步骤定义中,您将拥有
Given /^the following user records$/ do |table|
table.map_column!('date') do |date|
if date == 'TODAYS_DATE'
date = Time.now.strftime("%Y-%m-%d")
end
date
end
table.hashes.each do |hash|
#Whatever you need to do
end
end
请注意,这只会在您请求哈希时更改值。 table和table.raw将保持不变,但只要你需要行哈希,它们就会被map_column中的代码转换!
答案 1 :(得分:7)
我知道自问这个问题以来已经很久了,但我最近和Cucumber做了类似的事情,所以如果有人有兴趣,这里有另一种解决方案......
Given the following user records
| username | date |
| bob | Time.now.strftime("%Y-%m-%d") |
然后在你的步骤定义中只需eval()日期字符串
Given /^the following user records$/ do |table|
table.hashes.each do |hash|
date = eval(hash["date"])
end
end
虽然不像布兰登的例子,但是如果没有进一步的逻辑,这也不会让你输入确切的日期。
答案 2 :(得分:4)
bodnarbm的答案非常好,如果这是你想要做的。我自己的建议是看看timecop gem。使用它将时间设置为已知日期,然后相应地调整表格。
答案 3 :(得分:0)
基于fixtures文件,我创建了这段代码:
<强>功能强>
setLayoutAttributes
<强>助手:强>
Given the following "Inquirers":
| id | email | start_date |
| 1 | alberto@deco.proteste.pt | <%= Time.now %> |