Как заглушить метод ApplicationController в спецификации запроса

Мне нужно заглушить ответ метода current_user в спецификации запроса Rspec / capybara. Метод определен в ApplicationController и использует helper_method. Метод должен просто возвращать идентификатор пользователя. В рамках теста я бы хотел, чтобы этот метод каждый раз возвращал один и тот же идентификатор пользователя.

В качестве альтернативы я мог бы исправить свою проблему, установив в спецификации session [: user_id] (это то, что возвращает current_user ) ... но это, похоже, не работает либо.

Возможно ли это?

Изменить:

Вот что у меня есть (он не работает. Он просто запускает обычный метод current_user).

require 'spec_helper'

describe "Login" do

   before(:each) do
     ApplicationController.stub(:current_user).and_return(User.first)
   end

  it "logs in" do
    visit '/'
    page.should have_content("Hey there user!")
  end

end

Также не работает:

require 'spec_helper'

describe "Login" do

  before(:each) do
    @mock_controller = mock("ApplicationController") 
    @mock_controller.stub(:current_user).and_return(User.first)
  end

  it "logs in" do
    visit '/'
    page.should have_content("Hey there user!")
  end

end
63
задан zishe 28 May 2014 в 03:51
поделиться