- Schienen (5.1.4)
- rspec-Schienen (3.7.2)
- Capybara (2.16.1)
- devise (4.3.0)
Ich versuche, Erstellen Sie eine RSpec Rails 3.7-Systemspezifikation wie in https://relishapp.com/rspec/rspec-rails/v/3-7/docs/system-specs/system-spec.RSpec + Capybara + Devise: aktueller_Benutzer?
Zusätzlich möchte ich die Devise-Autorisierung anwenden. Ich folgte der Anweisung https://github.com/plataformatec/devise/wiki/How-To:-Test-with-Capybara
Aber ich denke, es ist eine Art von einer fehlerhaften Implementierung. Ich bekomme nicht die current_user
Methode (das ist nil
).
Hier ist meine einfache spec:
require 'rails_helper'
RSpec.describe "testing system", type: :system do
it "tests the spec" do
admin = create(:admin) # user-admin
login_as(admin, :scope => :admin)
visit root_path
click_link 'Home'
save_and_open_page
end
end
Da der Code auf meiner Website stark auf den current_user
Wert abhängig ist, verstehe ich nicht eine richtig gebildet gespeicherte Seite (es sieht aus wie ein Benutzer anmelden nicht) .
Was soll ich tun? Soll ich einfach manuell (irgendwie?) Einen Wert current_user
zuweisen? Oder vielleicht ist die https://github.com/plataformatec/devise/wiki/How-To:-Test-with-Capybara Strategie hauptsächlich defekt und sollte zu etwas mehr vollwertiger Technologie ersetzt werden?
Ich habe bereits versucht
current_user = admin
in meinem Code zu machen - aber ohne Ergebnis.
Ja, das Problem war über 'login_as (admin,: scope =>: user)' und 'login_as (admin)' funktioniert auch. Nur die Devise-Dokumentation war nicht klar genug. Und natürlich muss ich nicht auf "current_user" in meiner Spezifikation zugreifen - ich brauche es nur innerhalb des zu testenden Codes. Vielen Dank. – prograils