Тестирование контроллера Rails: Как отключить before_filter контроллера во время тестирования? - PullRequest
0 голосов
/ 12 марта 2011

before_filter контроллера ожидает, что пользователь вошел в систему. Вот почему тест контроллера не проходит (работает нормально, если я удаляю вызов аутентификации пользователя из before_filter).Возможно ли отключить аутентификацию пользователя во время тестирования?

class Company::BranchController < ApplicationController
  before_filter **:require_user**, :only => [:show, :edit, :update, :new, :create, :index]

  def create
    @branch = Company::Branch.new(params[:branch])
    if @branch.save
      redirect_to :action => :index             
    else
      render :action => :new    
    end
  end
end

Ответы [ 2 ]

2 голосов
/ 12 марта 2011

@ Антиархитект верен, однако, учитывая контекст вашей проблемы, я думаю, вам следует подумать о том, чтобы смоделировать вход пользователя в систему, а не отключить проверку метода.

Есть способы сделать это с помощью пакетов user / login. Для Devise он предоставляет простой метод sign_in @user; с Authlogic вы можете сделать UserSession.create @user. ИМХО, я думаю, что ваши тесты будут менее хрупкими и менее привязанными к реализации, если делать это последним способом.

1 голос
/ 12 марта 2011

Может быть, вы не должны отключать перед фильтром.Я думаю, что вы должны просто войти в систему путем тестирования:

 before(:each) do
   @current_user = Factory.create(:user)
   controller.stubs(:current_user).returns(@current_user)
 end
...