Ich versuche, die application.html.erb-Datei zu verwenden, um eine Navigationsleiste auf allen meinen Seiten zu erstellen. Ich möchte einige der Links zu nur angezeigt, wenn ein Benutzer angemeldet ist, und einige zu zeigen, wenn ein Benutzer nicht angemeldet ist, so habe ich die folgenden in Ansichten/Layouts/application.html.erb:Überprüfen, ob Benutzer angemeldet im Anwendungslayout ist
...
<% if user_signed_in? %>
# Show some links
<% end %>
<% if not user_signed_in? %>
# Show some other links
<% end %>
...
Das funktioniert, wenn ich auf die Seite gehe, aber das Problem kommt, wenn ich versuche, mit Rake zu testen.
Wenn ich meine Tests laufen lasse, erhalte ich folgende Fehlermeldung:
AppointmentsControllerTest#test_should_get_index: ActionView::Template::Error: Devise could not find the
Warden::Proxy
instance on your request environment. Make sure that your application is loading Devise and Warden as expected and that theWarden::Manager
middleware is present in your middleware stack. If you are seeing this on one of your tests, ensure that your tests are either executing the Rails middleware stack or that your tests are using theDevise::Test::ControllerHelpers
module to inject therequest.env['warden']
object for you.
All der ähnlichen Fehler ich online scheint nicht gefunden, um diese Situation zu übernehmen. Ich verstehe, dass es ein Problem gibt, wenn Devise beim Testen nicht geladen wird, aber nicht herausfinden kann, wie es zu beheben ist. Ich habe viele verschiedene Dinge ausprobiert und nichts hat funktioniert.
Jede Hilfe wird geschätzt. Vielen Dank!
Mögliche doppelte: http : //stackoverflow.com/questions/38421853/why-is-my-rspec-not-loading-devisetestcontrollerhe lpers –
Ich verwende RSpec nicht, so dass die Lösung nicht funktioniert – dcod
Das stimmt, ich denke, das Problem ist im Grunde das gleiche obwohl. Ich habe unten eine Antwort hinzugefügt, die für Komponententests funktionieren sollte. –