我正在对日期解析进行一些测试。我可以通过以下方式模拟日期:
my_str_date = '08022014at0600 +00:00'
my_new_date = DateTime.strptime(my_str_date, "%d%m%Yat%H%M %z").to_time
Time.stub(:now).and_return(my_new_date)
这在大多数情况下都足够好,但是当我想根据星期几得到日期时,我会Date.parse('wednesday')
例如,不幸的是,它需要当前日期。
我不知道如何找到全局解决方案来模拟一年中适用于Time.now
和Date.parse
的特定日期。有什么想法吗?
我虽然关于Timecop库,但它似乎没有处理我的情况。
答案 0 :(得分:0)
require 'time'
def get_weekday_date(name, ref = Date.today)
day = {"sun"=>0, "mon"=>1, "tue"=>2, "wed"=>3, "thu"=>4, "fri"=>5, "sat"=>6}[name[0, 3].downcase]
ref - ref.wday + day
end
date = get_weekday_date('wed', Date.parse("2010-10-10"))
puts date.strftime('%Y-%m-%d %A') ## 2010-10-13 Wednesday
答案 1 :(得分:0)
我无法对解析String
的功能进行明确的集成测试,因为Date.parse
不使用Time.now
作为当前时间的参考。所以我决定使用Chronic.parse
gem中的chronic
而不是Date.parse
。
Time.now
上的模拟现在在我调用Chronic.parse('wednesday')
时使用,它可以帮助我根据特定时间检查我的功能是否正常工作。现在