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
テストのブロックの前に発生させているのではないかと疑っています。そうならないようにする方法はありますか?または、何か他のことが起こっている可能性がありますか?