1

我正在尝试使用travel_toActiveSupport::Testing::TimeHelpers 中的方法。我希望能够visit_page像另一天一样使用。我可以Date.today从调用 to 定义的块中调用travel_to,它给了我想要测试的日期。但是,当Date.today从我正在访问 capybara 的页面的控制器中调用时,它总是给我今天的日期。

这是测试:

    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的测试块之前。有没有办法确保不会发生这种情况?或者,会不会发生其他事情?

4

0 回答 0