Как заглушить метод current_user Restul-аутентификации? - PullRequest
0 голосов
/ 12 мая 2010

Я пытаюсь запустить следующую спецификацию:

describe UsersController, "GET friends" do

  it "should call current_user.friends" do
    user = mock_model(User)
    user.should_receive(:friends)
    UsersController.stub!(:current_user).and_return(user)
    get :friends
  end

end

Мой контроллер выглядит так

  def friends
    @friends = current_user.friends
    respond_to do |format|
      format.html
    end
  end

Проблема в том, что я не могу заглушить метод current_user, поскольку при запуске теста я получаю:

Spec::Mocks::MockExpectationError in 'UsersController GET friends should call current
_user.friends'
Mock "User_1001" expected :friends with (any args) once, but received it 0 times[0m
./spec/controllers/users_controller_spec.rb:44:

current_user - это метод Restful-аутентификации, который включен в этот контроллер. Как мне проверить этот контроллер?

Заранее спасибо

1 Ответ

1 голос
/ 12 мая 2010

Вам нужно будет смоделировать пользователя, а затем передать его в метод login_as, чтобы имитировать вход в систему пользователя.

@user_session = login_as(stub_model(User))
UserSession.stubs(:new).returns(@user_session)

http://bparanj.blogspot.com/2006_12_01_archive.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...