小智 47
如果您在对象的上下文中调用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
Run Code Online (Sandbox Code Playgroud)
关键是,在调用睡眠的上下文中,对任何"自我"进行存根休眠.
Ben*_*enj 20
当调用sleep不在对象内时(例如,在测试rake任务时),可以在before块中添加以下内容(rspec 3语法)
allow_any_instance_of(Object).to receive(:sleep)
Run Code Online (Sandbox Code Playgroud)
在纯 rspec 中:
before do
Kernel.stub!(:sleep)
end
it "should sleep" do
Kernel.should_receive(:sleep).with(100)
Object.method_to_test #We need to call our method to see that it is called
end
Run Code Online (Sandbox Code Playgroud)