Rails: контроллер не видит путешествия во времени в тесте на капибару
Я пытаюсь использовать travel_to
метод в ActiveSupport::Testing::TimeHelpers. Я хочу быть в состоянии использовать 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
блок в тесте. Есть ли способ убедиться, что этого не произойдет? Или что-то еще может происходить?