存根 Date.today 进行 Minitest

问题描述 投票:0回答:1

虽然应用程序将使用系统时钟运行方法,
对时间或日期敏感的方法进行测试可能会变得混乱。 人们可以改变固定装置:

如:

availability_date: <%= Date.today %>
代替
availability_date: 2024-06-24
然而,当考虑与通常当前日期相距 N 天的方法时,这可能会使夹具集超载,从而插入更多错误机会(检测到或未检测到);最好使用从数据库中提取的数据子集,其中数据是正确的并且按预期工作。

是否有任何方法可以存根测试对系统时钟的使用,以便在实际日期远远超过该日期时反映

2024-06-24

ruby-on-rails minitest
1个回答
0
投票

Timecop gem 是 Ruby 中用于测试时间相关代码的有用工具。它允许您“冻结”时间,旅行到不同的时间点(过去或未来),并操纵时间来测试代码在不同时刻的行为。例如:

Timecop.freeze(Time.local(2020, 12, 25)) do
  puts Time.now          # Outputs 2020-12-25 00:00:00
end

Timecop.freeze(30.days.ago) do
  puts Time.now          # DateTime.now - 30.days
end
© www.soinside.com 2019 - 2024. All rights reserved.