Wie kann man überprüfen, ob Hilfsmethode / Variable in rspec existiert?
Frage
Im immer noch versuchen, herauszufinden, rspec und jetzt verwende ich authlogic meinen Benutzer und Sitzungen zu behandeln. Ich habe die üblichen authlogic Sachen wie die def current_user Methode applciation Controller hinzufügen und als Hilfsmethode, aber wie ich auf, dass in meiner rspec Controller-Datei?
Hier ist mein 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
wenn ich rspec es laufen nur sagt mir:
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>
so im Erraten es im rspec Kontext ist ... aber wie kann ich wissen, es in benutzer sessions_controller sein sollte? Und bin ich es auch richtig testen?
Lösung
Insted von current_user in Ihrem RSpec, versucht controller.current_user
Wenn Sie wollen Stub current_user Methode Gebrauch: controller.stub!(:current_user).and_return(whatever)
in before :each
Block, aber dann werden Sie immer whatever
, wenn man es Stummel.