我正在为如下所示的Rails应用程序的一部分编写回归测试:
Timeout.timeout(mode == :index ? 6 : 45) do
imap = Net::IMAP.new(...)
end
我想验证在每种情况下(即 mode == :index
和mode != :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
放在单元测试中。
如何模拟时间的流逝以触发测试中的超时?