【发布时间】:2014-09-12 08:01:25
【问题描述】:
在我的代码中,有很多地方我特意设置了“睡眠”,只是因为功能需要如此。但是,当我使用 RSpec 或 Cucumber 进行测试时,它会变得很麻烦,因为完成测试需要很长时间。
更新:感谢您的一些建议。但是,存根或手动重新定义可能很麻烦。我想象的只是一个调整调用,以加快“睡眠”的规模。
有这个宝石时间轴。它可以按比例加速 Time.now。如果这样的想法可以应用到睡眠中,那就太好了!
参考: https://github.com/travisjeffery/timecop
更新:抱歉回复晚了,下面可以说明我的情况:
class SomeClass
def some_method
sleep 15
make_api_call_A
sleep 45
make_api_call_B
end
end
describe SomeClass do
before do
Acceleration.speed_up(10) # speed time up to 10x
end
after do
Acceleration.reset
end
if "should make two API calls" do
subject.some_method
end
end
如您所见,在 some_method 中有两个不同持续时间的睡眠。我更喜欢的是,如果我可以将睡眠时间加快到 10 倍,而不是等待 60s,我只需要等待 6s。这大大加快了测试过程。
【问题讨论】:
-
只需将硬编码的
sleep值替换为变量/配置即可。 -
我不确定我是否理解您的问题。你能添加一个你的功能需要
sleep的例子吗? -
存根“麻烦”如何?存根就是为此而发明的。
-
你为什么要使用睡眠?请改用轮询。
-
你好,我更新了我的问题,如果你还有兴趣请看一下。
标签: ruby testing rspec cucumber sleep