2011-08-11 6 views
4

나는 꽤 기본적인 것을 놓치고있는 것처럼 느껴진다. 그러나 나도 알아낼 수 없다. RSpec 2보기 사양에 대한 할당 사용

하면 다음과 같은 사양을 수행 할 때 :

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는 인스턴스 변수를 만듭니다

는이 사람이 오래

6

을 할 수 있지만, 구글의 이익을 위해 희망. 그러나 current_user은 도우미 메서드 (또는 로컬 변수)입니다. 뷰 테스트에 전적으로 의존하지 않는다고 가정하면 다음 before 블록을 사용하여 문제를 해결할 수 있습니다.

before(:each) do 
    view.stub(:current_user) { User.new } 
end 
관련 문제