Time.now在测试环境中返回错误的结果

时间:2016-03-13 07:09:23

标签: ruby-on-rails ruby testing rspec

我正在我的Rails应用程序中运行带有capybara的RSpec测试套件。 当我将binding.pry置于测试中并尝试Time.current时,我得到=> Tue, 15 Dec 2015 00:06:30 UTC +00:00,这是三个月前的事。就我对地理学的基本知识而言,没有一个与EST有3个月差异的时区。那我在这里错过了什么? : - )

在开发环境中运行相同的查询(即通过rails console)会返回正确的结果。

1 个答案:

答案 0 :(得分:2)

听起来您的套件中有使用the Timecop gem的规格。因此,请查看Timecop.freeze的每个实例,并确保有相应的Timecop.return语句,以便正确拆除时间冻结并防止其意外的副作用泄漏到您的其他规格中套房。以下是the gem's README的示例:

describe "some set of tests to mock" do
  before do
    Timecop.freeze(Time.local(1990))
  end

  after do
    Timecop.return
  end

  it "should do blah blah blah" do
  end
end
相关问题