2011-01-06 8 views
2

Я все еще пытаюсь выяснить rspec и сейчас я использую authlogic для обработки своих пользователей и сеансов. Я использовал обычный материал для авторизации, например, добавив метод def current_user к контроллеру applciation и как вспомогательный метод, но как мне получить доступ к этому в моем файле контроллера rspec?Как проверить, существует ли вспомогательный метод/переменная в rspec?

Вот мой user_sessions_controller_spec.rb:

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 

когда я бегу RSpec это как раз говорит мне:

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? И я даже тестирую его правильно?

ответ

3

Insted из CURRENT_USER в вашем RSpec, попробуйте controller.current_user

Если вы хотите окурок использовать метод current_user: controller.stub!(:current_user).and_return(whatever) в before :each блок, но тогда вы всегда будете получать whatever если вы окурок его.