2013-10-21 11 views
8

W moim spec_helper.rb DodałemSzyny + 4 + rspec Devise: Metoda niezdefiniowana „env” w specyfikacji kontrolera dla sign_in użytkownika

config.include Devise::TestHelpers, :type => :controller 

kontroler ciemno przed: wszystkie hak I'am próbuje zaloguj się użytkownik z tym kodem

@request.env["devise.mapping"] = Devise.mappings[:user] 
user = FactoryGirl.create(:confirmed_user) 
sign_in user 

i uzyskać NoMethodError: niezdefiniowana metoda `env” do zera: NilClass.

Wszelkie pomysły?

+0

Spróbuj wymagać Warden :: Test :: Helpers. Zobacz ten wątek: http://stackoverflow.com/questions/8996246/rspec-integration-test-with-devise-throws-nomethoderror-error –

Odpowiedz

15

Zmieniłem before(:all) do before(:each) i teraz działa. Wygląda jak niekompatybilność API między devise (używane github gałąź główna) i rspec 2.14.1.

0

Specyfikacja kontrolera będzie zawierała obiekt żądania. powinieneś zmienić @request zażądać ..

request.env["devise.mapping"] = Devise.mappings[:user] 
1

Skomentuj linię @request.env["devise.mapping"] = Devise.mappings[:user], jeśli piszesz specyfikacje dla wewnętrznych kontrolerów Devise. Odwołanie z sekcji pomocy dla testerów w Devise docs.