与RSpec一起睡觉

时间:2015-09-04 13:21:48

标签: ruby-on-rails rspec sleep stub

我的应用中有以下代码:

def timeout_tasks
  10.times do
    # Work...
    sleep 2
  end
end

我想测试这个方法,但需要存根sleep,我不必等待那么多测试才能完成。

我该怎么做?我知道allow(Object).to receive(:sleep),但我不确定Object是什么。或者还有其他更好的方法吗?

2 个答案:

答案 0 :(得分:1)

你应该在它被调用的对象上存根睡眠

例如

class SleepTest
  def sleep_method
    sleep 2
  end
end

在你的考试中

sleep_test = SleepTest.new
allow(sleep_test).to receive(:sleep)

答案 1 :(得分:0)

我看起来在sleep中定义了Kernel方法,因此这将是您的对象。