如何测试简单的ruby方法,具有时序和配置依赖性

时间:2013-07-31 07:14:47

标签: ruby testunit

我有这个方法:

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返回我想要的但是看起来太丑了。

2 个答案:

答案 0 :(得分:0)

您可以使用timecop作为解决方案的一部分(这也为我赢得了“最好的宝石,永远”)。它使用简单,并且可以同步修补大多数时间数据源,因此,例如,如果您的Utils模块使用标准方法来评估时间,那么它应该具有与“{1”相同的“现在”概念。显示。

注意,如果Time.now在另一个进程上调用外部API,则无效。在这种情况下,您应该将其存根以返回测试断言中所需的正常运行时间值。

以下Utils代码段作为示例,并对您可用的内容做出一些假设(例如被测模块被称为rspec

Server

答案 1 :(得分:0)

使用模拟框架 像rspec-mock,rr mock