2012-02-25 2 views
0

Просмотреть спецификацию не удалось, поскольку метод ApplicationController, logged_in?, хочет, чтобы пользователь был возвращен.RSpec: заглушить метод контроллера в представлении

Не знаете, как это специфицировать. В настоящее время в before(:each) у меня есть:

controller.stub!(:logged_in?).and_return(FactoryGirl.create(:active_user)) 
@ballots = FactoryGirl.create_list(:full_ballot, 2) 

, который не работает:

Failure/Error: render 
ActionView::Template::Error: 
    undefined method 'logged_in?' for #<#<Class:0x007f9c908e4b10>:0x007f9c90873b68> 

FWIW: :active_user является пользователем завод для пользователя, который прилагается к Центру обновления на :full_ballot

: В соответствии с просьбой:

class ApplicationController < ActionController::Base 
    ... 
    def current_user 
    @current_user ||= User.find(cookies[:id_token]) if cookies[:id_token] 
    end 

    def logged_in? 
    current_user 
    end 
    ... 
end 
+0

Можете ли вы разместить методы 'current_user' и' logged_in? '? – James

ответ

2

Посмотрите, как это делается devise test helpers. Похоже, вы можете определить этот метод перед испытаниями, и он должен работать:

def logged_in? 
    FactoryGirl.create :active_user 
end 
+0

Отлично работает! Оставьте его открытым на несколько часов, чтобы увидеть, есть ли другие подходы. – Meltemi

Смежные вопросы