【发布时间】:2019-03-06 02:08:56
【问题描述】:
为了夏令时目的,我正在使用两种方法编写自动化测试。这些方法定义如下:
- 调整输入的 DATETIME(通过
Time.Parse)以四舍五入到最接近的 DST 更改 - 检查方法的 DATETIME 是否向前或向后更改了一小时,无论是
Time.Parse.include?("March")还是.include("November")
重申一下,此方法的目的是从我编写的上一个方法中获取日期(调整当前日期并将其四舍五入到下一个 DST 日期),确定返回值是 3 月还是 11 月,并验证时间向前或向后。 第一种方法已经完成,如下:
def dst_datechange(date)
date = Time.now
case date
when (date > Time.Parse('March 11, 2018 2:00am')) && (date <
Time.parse('November 4, 2018 2:00am'))
date = Time.parse('November 4, 2018 2:00am')
when (date > Time.Parse('November 4 2018, 2:00am')) && (date <
Time.parse('March 10, 2:00am'))
date = Time.parse('March 10, 2019 2:00am')
when (date > Time.Parse('March 10, 2019 2:00am')) && (date <
Time.parse('November 3, 2019 2:00am'))
date = Time.parse('November 3, 2019 2:00am')
when (date > Time.Parse('November 3, 2019 2:00am')) && (date <
Time.parse('March 8, 2020 2:00am'))
date = Time.parse('March 8, 2020 2:00am')
when (date > Time.Parse('March 8, 2020 2:00am')) && (date <
Time.parse('November 1, 2020 2:00am'))
date = Time.parse ('November 1, 2020 2:00am')
else
raise "The date #{date} does not match any dst date parameter"
end
date
end
现在,我的问题是,如何从该 case 语句中获取返回的 DATETIME 值,将其放入 if 语句中以确定它是否包含 NOVEMBER 或 MARCH 月份,然后如果是 3 月,则检查以查看如果时间提前一小时或者是 11 月,则检查时间是否提前一小时。
【问题讨论】:
-
您最好在不参考您的方法
dst_datechange的情况下陈述您的问题(顺便说一句,不使用其参数date,因为date的值在第一个被覆盖线)。这部分是因为可以更有效地编写该方法(无需硬连线 DST 更改的时间)。更一般地说,当您提出问题时,请避免假设需要特定步骤来回答问题。
标签: ruby time automation dst qa