2013-10-21 3 views
8

をsign_inためには、私は前に、コントローラの仕様ではRailsの4 + RSpecの+考案:しようと、すべてのフックI'am:コントローラの仕様で未定義のメソッド「のenv」私のspec_helper.rbでユーザー

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

を追加しました未定義のメソッドはnilのための `のenv」:NilClassこのコード

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

とNoMethodErrorを取得すると、ユーザーはサインインしてください。

アイデア?

+0

Warden :: Test :: Helpersが必要です。このスレッドを見る:http://stackoverflow.com/questions/8996246/rspec-integration-test-with-devise-throws-nomethoderror-error –

答えて

15

..要求する@requestから変更する必要があります。 devisegithubマスターブランチ)とrspec 2.14.1の間のAPI非互換性のようです。

0

コントローラー仕様には要求オブジェクトが含まれます。あなたは、おそらく私がbefore(:each)before(:all)を変更した、そして今それが動作

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

Deviseの内部コントローラの仕様を記述している場合は、@request.env["devise.mapping"] = Devise.mappings[:user]行をコメントアウトしてください。 Devise docsのテストヘルパーのセクションを参照してください。

関連する問題