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