Comment vérifier si la méthode d'aide / variable existe dans rspec?
Question
Im essayant toujours de trouver rspec et maintenant je me sers authlogic pour gérer mes utilisateurs et des sessions. Je l'ai fait les choses authlogic habituelles comme l'ajout de la méthode current_user def au contrôleur applciation, et comme une méthode d'assistance, mais comment puis-je accéder dans mon fichier contrôleur rspec?
Voici mon 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
quand je lance rspec il me dit simplement:
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>
im devinant il est dans le contexte rspec ... mais comment puis-je savoir qu'il devrait être à l'utilisateur sessions_controller? Et que je teste même correctement?
La solution
Insted de current_user dans votre RSpec, essayez controller.current_user
Si vous voulez bouchonner méthode current_user utilisation: controller.stub!(:current_user).and_return(whatever)
dans before :each
bloc, mais vous obtiendrez toujours whatever
si vous cognez il.