RSpec: Kernel::sleep をスタブ化しますか?
概要
rspec シナリオで Kernel.sleep をスタブする方法はありますか?
解決策
オブジェクトのコンテキスト内で sleep を呼び出している場合は、次のようにオブジェクト上で sleep をスタブする必要があります。
class Foo
def self.some_method
sleep 5
end
end
it "should call sleep" do
Foo.stub!(:sleep)
Foo.should_receive(:sleep).with(5)
Foo.some_method
end
重要なのは、睡眠が呼び出される文脈において「自己」が何であれ、睡眠をスタブすることです。