Метод поддержки RSpec-заглушки в спецификации контроллера

Нашли похожие вопросы, но на удивление никто, что я нашел, дать простой ответ...

Попытка заглушить вспомогательный метод в моей спецификации контроллера; не совсем уверен, какой объект нужно удвоить?

Контроллер вызывает этот метод:

#app/helpers/sessions_helper.rb

def signed_in?
  current_user.present?
end

Я хотел бы заглушить его в spec, чтобы вернуть true/false.

Ответ 1

Вы можете заглушить его из спецификации контроллера:

controller.stub!(:signed_in?).and_return(true) # emulate signed in user
controller.stub!(:signed_in?).and_return(false) # emulate unsigned user

Объект "контроллер" предопределен в спецификациях контроллера.

UPDATE:

С синтаксисом RSpec 3:

allow(controller).to receive(:signed_in?).and_return(true)
allow(controller).to receive(:signed_in?).and_return(false)

Благодаря @jakeonrails для напоминания.