rspec中fake_time + = 60是什么意思?

时间:2013-01-14 21:03:35

标签: ruby rspec

我正在阅读一篇关于使用“时间”的rspec教程。有人可以解释以下代码的含义吗?

it "takes exactly 1 second to run a block that sleeps for 1 second (with stubs)" do
  fake_time = @eleven_am
  Time.stub(:now) { fake_time }
  elapsed_time = measure do
    fake_time += 60  # adds one minute to fake_time
  end
  elapsed_time.should == 60
end

我认为它需要60秒,但从技术上讲,我只是在时间变量fake_time上加60秒,这应该是瞬时的。为什么需要60秒?

这是我写的measure函数的代码。它假设要测量运行代码块所需的时间。

def measure
  m1 = Time.now
  num.times { yield }
  m2 = Time.now
  m2 - m1
end

1 个答案:

答案 0 :(得分:0)

此测试使用基本stubbing。它不会使该方法花费额外的时间 - 它只是修改Time.now返回的'stubbed'值。这对于测试非常有用,以确保在经过一段时间后,将返回预期的值。