RSpec und entwickeln : nicht sign_in admin
Bin ich die Migration meiner standart Rails unit tests zu RSpec und ich habe Probleme mit entwickeln. Alle controller mit entwickeln die Authentifizierung fehlschlägt, werden mit RSpec.
Ich versuche sign_in ein admin in RSpec nach dem entwickeln tutorial, ohne Erfolg :
Hier ist, was ich versucht habe :
/spec/controllers/ipad_tech_infos_controller_spec.rb
before :each do
@request.env["devise.mapping"] = Devise.mappings[:admin]
@admin = FactoryGirl.create :admin
sign_in @admin
end
/spec/unterstützen/entwickeln.rb
RSpec.configure do |config|
config.include Devise::TestHelpers, :type => :controller
end
/spec/Fabriken/admin.rb
FactoryGirl.define do
factory :admin do
email "[email protected]"
password "foobar"
password_confirmation {|u| u.password}
end
end
Mein Modell ist nicht überprüfbar, alle meine controller spec scheitern.
Wenn ich entfernen before_filter :authenticate_admin! dann alle meine tests übergeben.
Kann jemand helfen ?
- add config.umfassen Entwickeln::Test::ControllerHelpers, Typ: :controller rails_helper.rb, funktionierte es gut mit mir
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wahrscheinlich Schuldigen: Stellen Sie sicher, dass Sie nicht die Einstellung der Sitzung explizit im controller-Spezifikationen.
Zum Beispiel, wenn Sie mit der Standard-Rspec-scaffold-generator erzeugten controller-specs pass sowie session-Parameter.
Diese überschreiben die session-Variablen, die sich Entwickeln, die Helfer setzen sich mit Warden. Die einfachste Lösung ist, um Sie zu entfernen:
Alternativ können Sie die Warden session-Informationen, die in Ihnen manuell, anstatt mit Entwickeln die Helfer.
sign_in :user, @admin
, was bedeutet, dasssign_in(scope, resource)
Sie sagte: "Mein Modell ist nicht überprüfbar", so dass das folgende gilt nicht für dich, aber es gibt eine Feinheit hier, die andere vielleicht vermissen, wie ich es Tat (und verschwendet eine Stunde).
Hinweis: in der RSpec/Erarbeiten, Wie-Zu, dass vdaubry erwähnt oben, es sagt, wenn Sie das Gerät "überprüfbar" - Modul aktiviert ist in Ihrem Modell, dann entweder müssen Sie rufen Sie
@admin.confirm!
Recht vorsign_in @admin
oder anderem sicherstellen, dass Ihre Fabrik legt einenconfirmed_at
wenn Sie es schafft Ihre@admin
. Wenn Sie dies nicht tun, diesign_in
Anruf wird im hintergrund fehl, und alle nachfolgenden Spezifikationen werden sich wie Sie sind nicht angemeldet.Ich weiß nicht, was verursacht wurde, aber für mich war die Lösung, fügen Sie die folgende Methode:
Finden Sie hier:
rail3/rspec/entwickeln: rspec-controller-test schlägt fehl, es sei denn ich füge eine dummy=subject.current_user.überprüfen