在RSpec中模拟超时?

时间:2018-09-28 08:25:50

标签: ruby-on-rails ruby unit-testing rspec timeout

我正在为如下所示的Rails应用程序的一部分编写回归测试:

Timeout.timeout(mode == :index ? 6 : 45) do
  imap = Net::IMAP.new(...)
end

我想验证在每种情况下( mode == :indexmode != :index),是否设置了正确的Timeout长度。

我尝试使用ActiveSupport's travel

allow(Net::IMAP).to receive(:new).and_wrap_original do |m, *args|
  travel 6
  m.call(*args)
end

expect { method }.to raise_error(Timeout::Error)

,但不会触发超时。如果我改用sleep,那么它能工作,但是显然,我没有将sleep 45放在单元测试中。

如何模拟时间的流逝以触发测试中的超时?

0 个答案:

没有答案