存根睡眠 RSpec

Stub sleep with RSpec

我的应用程序中有以下代码:

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

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

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

我看起来像 sleep method is defined in Kernel 所以那将是你的对象。

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

例如

class SleepTest
  def sleep_method
    sleep 2
  end
end

在你的测试中

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