Integration testen mit rspec und entwickeln sign_in env
Ich bin mit entwickeln konfiguriert omniauth facebook Zeichen der integration.
Beim aufrufen der sign_in
Methode aus meiner spec/request
tests, die ich bekomme:
undefined method `env' for nil:NilClass
spec:
describe FacebookController do
include Devise::TestHelpers
it "should display facebook logged in status" do
@user = User.create(:id => "123", :token => "token")
sign_in @user
visit facebook_path
end
end
- Hier ist eine Lösung erarbeiten github wiki funktioniert im controller test für mich sein https://github.com/plataformatec/devise/wiki/How-To:-Test-controllers-with-Rails-3-and-4-(and-RSpec)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein code sieht viel wie mir - ich war versucht, Capybara und das Gerät TestHelper Funktionen, und es stellt sich heraus, Sie können nicht, je https://github.com/plataformatec/devise/wiki/How-To:-Test-with-Capybara. Der empfohlene Weg, dies zu tun ist, erklärt auf dieser Seite, und es funktionierte für mich.
Klar zu sein, hier ist was ich getan habe - in
spec_helper.rb
:Und in meinem code, einfach -
logout :user
.Hier ist, warum, nach dem Entwickeln, wiki, Sie nicht verwenden können
sign_out
:Welche, grob gesagt, bedeutet, dass in der Erwägung, dass mit, sagen wir,
MiniTest
, ein Objekt, das die Anfrage (@request
) Hinzugefügt wird, wie eine Instanz-variable für die TestCase-Klasse, die geht auch nicht mit Capybara. Ich habe nicht sah, den code zu kennen die details mehr genau, aber im Grunde genommen Warden erwartet, finden Sie dieses Objekt, um Zugriff auf die cookie speichern, wo das Zeichen in Anmeldeinformationen. Mit Capybara/RSpec, ich erwarte, dass dies nicht passiert.