Stub sleep with RSpec

2019-09-14 02:52发布

I have the following code in my app:

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

I would like to test this method, but need to stub sleep to I don't have to wait that much for the test to finish.

How can I do this? I am aware of the allow(Object).to receive(:sleep) but I'm not sure what the Object is. Or is there any other better approach?

2条回答
孤傲高冷的网名
2楼-- · 2019-09-14 03:14

I looks like the sleep method is defined in Kernel so that would be your Object.

查看更多
啃猪蹄的小仙女
3楼-- · 2019-09-14 03:34

You should stub sleep on the object it is called on

Eg.

class SleepTest
  def sleep_method
    sleep 2
  end
end

And in your test

sleep_test = SleepTest.new
allow(sleep_test).to receive(:sleep)
查看更多
登录 后发表回答