Ruby time.new vs time.now

时间:2015-06-07 01:25:25

标签: ruby

testfirst.org Performance Monitor rspec

我正在研究testfirst.org提供的上述问题。下面是我的代码,所有测试都通过:

def measure(iterate = 1)
  timestamp = Time.now
  iterate.times { yield }
  timestamp_end = Time.now
  (timestamp_end - timestamp) / iterate
end

但是,如果我将Time.now替换为Time.new,则部分测试会失败。我读到Time.now是Time.new的别名。那么为什么测试失败以及使用这两种方法产生的差异是什么?

1 个答案:

答案 0 :(得分:2)

这是因为测试用例stubs.now而不是.new的返回值:

Time.stub(:now) { @eleven_am }

由于测试期望@eleven_am作为返回值,因此它们会失败。你必须存根Time.new,但谁知道可能造成的其他破坏。