Я пытаюсь использовать файл application.html.erb для создания панели навигации на всех моих страницах. Я хочу, чтобы некоторые ссылки отображались только в том случае, если пользователь вошел в систему, а некоторые отображались, если пользователь не вошел в систему, поэтому в views/layouts/application.html.erb у меня есть следующее:
...
<% if user_signed_in? %>
# Show some links
<% end %>
<% if not user_signed_in? %>
# Show some other links
<% end %>
...
Это работает, когда я захожу на сайт, но проблема возникает, когда я пытаюсь протестировать грабли.
Когда я запускаю свои тесты, я получаю следующую ошибку:
AppointmentsControllerTest#test_should_get_index: ActionView::Template::Error: Devise не удалось найти экземпляр
Warden::Proxy
в среде вашего запроса. Убедитесь, что ваше приложение загружает Devise и Warden, как и ожидалось, и что промежуточное ПОWarden::Manager
присутствует в вашем стеке промежуточного ПО. Если вы видите это в одном из своих тестов, убедитесь, что ваши тесты либо выполняют стек промежуточного программного обеспечения Rails, либо ваши тесты используют модульDevise::Test::ControllerHelpers
для внедрения объектаrequest.env['warden']
вместо вас.
Все подобные ошибки, которые я нашел в Интернете, похоже, не относятся к этой ситуации. Я понимаю, что во время тестирования Devise не загружается, но не могу понять, как это исправить. Я пробовал много разных вещей, и ничего не получалось.
Любая помощь приветствуется. Спасибо!