RSpec: заглушить метод контроллера в представлении - PullRequest
0 голосов
/ 26 февраля 2012

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

Не уверен, как это определить.В настоящее время в 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

1 Ответ

2 голосов
/ 26 февраля 2012

Посмотрите, как разработает помощников по тестированию .Похоже, вы можете определить этот метод перед тестами, и он должен работать:

def logged_in?
   FactoryGirl.create :active_user
end
...