2013-10-21 13 views
8

Nel mio spec_helper.rb ho aggiuntoRails 4 + Rspec + Devise: metodo non definito 'env' in specifiche del controller per sign_in un utente

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

Nel regolatore spec prima: tutto I'am gancio cercando di accedi utente con questo codice

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

e ottenere NoMethodError: metodo non definito `env' per nil: NilClass.

Qualche idea?

+0

Provare a richiedere Warden :: Test :: Helpers. Vedi questo thread: http://stackoverflow.com/questions/8996246/rspec-integration-test-with-devise-throws-nomethoderror-error –

risposta

15

ho cambiato before(:all)-before(:each), e ora funziona. Sembra incompatibilità API tra devise (utilizzato il ramo master github) e rspec 2.14.1.

0

Le specifiche del controller avranno un oggetto di richiesta in esso. Probabilmente si dovrebbe cambiare da @request richiedere ..

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

Commenta la riga @request.env["devise.mapping"] = Devise.mappings[:user] se si scrivono le specifiche per i controller interni di Devise. Riferimento dalla sezione relativa agli ausili di test nello Devise docs.

Problemi correlati