Rails:控制器没有看到在水豚测试中的时间旅行

时间:2017-11-27 18:58:37

标签: ruby-on-rails capybara rspec-rails time-travel

我试图在ActiveSupport :: Testing :: TimeHelpers中使用travel_to方法。我希望能够使用visit_page,就好像它是另一天一样。我可以在Date.today调用定义的块中调用travel_to,它会给我一个我尝试测试的日期。但是,当我在与水豚一起访问的页面的控制器中调用Date.today时,它总是给我今天的日期。

以下是测试:

    it 'shows the date' do
      new_time = Time.local(2017, 11, 16, 10, 0, 0)
      travel_to(new_time) do
          puts Date.today
          visit root_path
          expect(page).to have_content '2017-11-16'
      end
    end

控制器:

class RootPageController < ApplicationController

  def index
     @this_date = Date.today 
  end
end

测试失败:

2017-11-16
    ...
     Failure/Error: expect(page).to have_content '2017-11-16'
       expected to find text "2017-11-16" in "2017-11-27"

我怀疑不知何故水豚会导致控制器中Date.today的调用发生在测试中的travel_to块之前。有没有办法确保不会发生?或者,还有其他事情可以继续吗?

0 个答案:

没有答案