我有这个方法:
def self.should_restart?
if Konfig.get(:auto_restart_time).present?
Time.now>=Time.parse(Konfig.get(:auto_restart_time)) && Utils.uptime_in_minutes>780
end
end
在常规Ruby(不是Rails)中,我将如何进行测试呢?我可以monkeypatch Konfig和Utils返回我想要的但是看起来太丑了。
答案 0 :(得分:0)
您可以使用timecop
作为解决方案的一部分(这也为我赢得了“最好的宝石,永远”)。它使用简单,并且可以同步修补大多数时间数据源,因此,例如,如果您的Utils
模块使用标准方法来评估时间,那么它应该具有与“{1”相同的“现在”概念。显示。
注意,如果Time.now
在另一个进程上调用外部API,则无效。在这种情况下,您应该将其存根以返回测试断言中所需的正常运行时间值。
以下Utils
代码段作为示例,并对您可用的内容做出一些假设(例如被测模块被称为rspec
)
Server
答案 1 :(得分:0)
使用模拟框架 像rspec-mock,rr mock