2011-08-11 15 views
4

私はかなり基本的なものを見逃しているように感じますが、私はそれを理解することもできません。RSpec 2ビュー仕様のassignの使用

以下のスペック行う場合:

require 'spec_helper' 

describe "/mymodel/show.html.erb" do 
    before(:each) do 
    @mymodel = Factory(:mymodel) 
    @user = Factory(:user) 
    assign(:web_tip, @mymodel) 
    assign(:current_user, @user) 
    end 

    it "renders attributes in <p>" do 
    render 
    rendered.should have_text(/somevalue/) 
    end 
end 

を私が(ビューのレイアウトは、現在のログインステータスを表示するには、それを呼び出すために望んでいる)ローカル変数CURRENT_USERが定義されていないというエラーが表示されます。

私はRails 3、Rspec 2.6.4で、現在のドキュメントに正しく従っていると思っています。

答えて

0

これでauthlogicを動作させる方法は決して分かりませんでした。したがって、テストでcurrent_userメソッドを使用して動作させるために、monkeypatchedしました。

def current_user 
    Factory(:user) 
end 

私はまだ誰かが正しい方法で私を助けることができる場合、私はまだ "答え"を授与されました。

1

何(同様の問題で)私のために働いたことのようなものだった:私はこの問題は、現在のユーザーが逢引(インスタンス変数)ではないということだと思います

@controller.stub(:current_user) { @user }

は、sessionの値です。

assignが唯一のインスタンス変数を作成します。

は、この1つは古いです

6

に役立ちますが、Googleのために願っています。ただし、current_userはヘルパーメソッド(またはローカル変数)です。ビューテストに完全に頼っていないと仮定すると、次のbeforeブロックを使用して問題なく動作させることができます。

before(:each) do 
    view.stub(:current_user) { User.new } 
end 
関連する問題