我试图在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
块之前。有没有办法确保不会发生?或者,还有其他事情可以继续吗?