Как проверить, существует ли метод / переменная помощника / переменной в RSPEC?
Вопрос
Я все еще пытаюсь выяснить RSPEC и прямо сейчас, я использую authLogic для обработки моих пользователей и сеансов. Я сделал обычные AUTHLOGIC, как добавлять метод def rect_user к контроллеру ответов, а как метод помощника, но как мне получить доступ к этому в моем файле контроллера 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 ... Но как я узнаю, что это должно быть в пользовательских сеансах_Controller? И я даже проверяю это правильно?
Решение
Insted of teake_user в вашем rspec, попробуйте controller.current_user
Если вы хотите подключить метод Current_user, используйте: controller.stub!(:current_user).and_return(whatever)
в before :each
блок, но тогда вы всегда получите whatever
Если вы заглушите его.