RSpec上的Time.now无效

时间:2015-12-11 17:53:40

标签: ruby-on-rails ruby rspec

如何在RSpec上设置正确的时间。

[2] pry(#<RSpec::ExampleGroups::Device::Creation::Security>)> Time.now
=> Fri, 01 Jan 2016 10:00:00 CET +01:00

在rails控制台上我有正确的时间:

[1] pry(main)> Time.now
=> 2015-12-11 12:41:36 -0500

我不想留言,因为我没有把时间花在课堂上。在I类测试中使用以下方法:

  def within_expiration?
    Time.now - user.sms_sent_date < time_limit_in_seconds
  end

这不符合预期,因为Time.now是2016年1月1日

user.sms_sent_date有正确的约会对象。

1 个答案:

答案 0 :(得分:2)

确保您没有任何库正在改变规范中的Time

例如,最常用的一种是Timecop。确保您没有全局设置它,而是使用块或before/after来正确模拟日期并在不再需要时拆除模拟。