我正在使用yaml中的灯具编写单元测试,以便在rails项目中使用ruby。
对于<
或>
到n
岁的用户,我们有很多测试。
例如:
young_kid:
id: 2
firstname: Nano
lastname: Shinonome
email: imarobot@nichijou.jp
birthdate: 2000-05-11
有没有办法指定像2.days.from_now
这样的相对日期?一旦达到阈值,我们的测试不会失败?
我们正在使用香草RoR单元测试。
答案 0 :(得分:0)
对于动态灯具数据,最好使用FactoryGirl。
但是,对于您的测试,您可以使用Timecop gem来确定测试期间的时间。以下是Timecop的单元测试结果:
Timecop.freeze(Date.new(2018, 5, 11, 0, 0, 0)) do
assert young_kid.birthdate < 18.years.ago
end
答案 1 :(得分:0)
是的,有一种方法可以在fixtures yaml文件中指定相对日期。这样做......
young_kid:
...
birthdate: <%= 2.days.from_now.to_date.to_s(:db) %>
侧面说明灯具是在测试生命周期的早期加载的,所以测试设置块中的冻结时间(使用类似Timecop的东西)会出现 灯具中的相对日期加载后,意味着你的灯具中的相对日期总是相对于今天。
这会严重限制测试中冻结时间的有效性。