2011-01-06 2 views
2

지금도 rspec을 알아 내려고 노력 중이며 지금은 authlogic을 사용하여 내 사용자와 세션을 처리하고 있습니다. 나는 def_current_user 메소드를 applciation 컨트롤러에 추가하는 것과 같은 일반적인 authlogic 작업을 수행했고, 도우미 메서드로 사용했지만 어떻게하면 rspec 컨트롤러 파일에 액세스 할 수 있습니까? 내가 RSpec에 실행할 때헬퍼 메소드/변수가 rspec에 존재하는지 확인하는 방법은 무엇입니까?

require 'spec_helper' 
require 'authlogic' 

describe UserSessionsController do 

    context "user is already logged in" do 

    before(:each) do 
     include Authlogic::TestCase 
     activate_authlogic 
     UserSession.create Factory.build(:user) 
    end 

    it "should redirect the user to the home page" do 
     get 'new' 
     response.should redirect_to(home_path) 
    end 

    end 

    describe "#create" do 
    context "when the user is not logged in" do  
     before(:each) do 
     current_user = nil 
     end 

     it "correct authorization should create a new session" do 
     post 'create', {:login => "afactoryuser", :password => "apass", :password_confirmation => "apass"} 
     current_user.should_not be_nil 
     end 
    end 
    end 

end 

은 그냥 저에게 말한다 : 여기

내 user_sessions_controller_spec.rb입니다

correct authorization should create a new session 
undefined local variable or method `current_user' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_2::Nested_1:0x000001017d3410> 

그렇게는 RSpec에 문맥에서 추측 메신저 ...하지만 난 어떻게해야 user-sessions_controller에 있어야한다는 것을 알고 계십니까? 그리고 나는 그것을 정확하게 테스트하고 있습니까? controller.stub!(:current_user).and_return(whatever) 블록 before :each에,하지만 당신은 그것을 스텁이라면 당신은 항상 whatever을 얻을 것이다 : 당신이 CURRENT_USER 방법 사용을 스텁 할 경우 RSpec에있는 CURRENT_USER의

답변

3

이 Insted, controller.current_user

을 시도합니다.