RSpec で sleep を stub する
上記の方法でうまくいかない、ライブラリ内部などで sleep されている場合を考えてみました。
spec/support/stub_sleep.rb
module Kernel def sleep_with_stub(*args) # do nothing end end RSpec.shared_context 'Stubbing sleep', stub_sleep: true do before { Kernel.send :alias_method_chain, :sleep, :stub } after { Kernel.send :alias_method, :sleep, :sleep_without_stub } end
実行時には、stub_sleep タグをつけます。
describe Foo, :stub_sleep do ... end