2012-02-28 8 views
16

私はちょうどデヴァイスのテストを始めました。私は、私はこのエラーを取得しています理由を理解することができません::キャッチされていないスロー:デヴァイステストのワーデン

Failure/Error: subject.current_user.should_not be_nil 
ArgumentError: 
    uncaught throw :warden 

これは私の仕様のコードである::

require "spec_helper" 

    describe Devise::PasswordsController do 
     include Devise::TestHelpers 
     before(:each) do 
      user = Factory(:user) 
      @request.env["devise.mapping"] = Devise.mappings[:user] 
      sign_in user 
     end 
     it "should have a current user" do 
       subject.current_user.should_not be_nil 
     end 
    end 

誰もがこの問題の周りの修正を得ていますか?私はgithubに問題があることを知っていますが、彼らのケースでは私の場合とは異なりinclude Devise::TestHelpersは存在しませんでした。

私は、この行のエラーを取得しています:: subject.current_user.should_not be_nil

+0

この問題の修正を見つけましたか? – Zabba

+0

@Zabba、ya、私はちょうど工場からロードしているユーザーをノックしました。主に、私は2つのことをしました。 '' 1) ''これは統合テストではないことを確認し、 '' 2) '' ControllerMacros ** '' login_user''から関数を呼び出してください。 – ktkaushik

答えて

56

私は、これは非常に古い質問ですが、私は同様の問題に出くわした参照してください。これが私を助けたのです。あなたがconfirmableモジュールを使用している場合

、そうでない場合はウォーデン例外がスローされ、ユーザーを確認することを忘れないでください。あなたのコードへの適切な変更は次のようになります。authenticate_user!が失敗したときに詳細情報がDevise Wiki

+4

あなたは 'user.confirm! ' confirmed_atと保存の略記。 – mahemoff

+1

偉大な発見は、この答えは、私は、固定具と、いくつかの問題を抱えていた – jbnunn

+1

@ktkaushik受け入れられる必要があります:この1つは働くhttps://gist.github.com/henrydjacob/1344451 –

2

uncaught throw :wardenで見つけることができ

before(:each) do 
    user = Factory(:user) 
    user.confirmed_at = Time.zone.now 
    user.save 
    @request.env["devise.mapping"] = Devise.mappings[:user] 
    sign_in user 
end 

が起こります。

図アウト、ユーザーの認証が失敗している、とあなたはあなたの問題を解決しています理由。

関連する問題