# ApplicationController
def user_logged_in?
'hoge'
end
helper_method :user_logged_in?
# header.html.slim_spec.rb
RSpec.describe 'application/_header', type: :view do
let(:user) { create(:user) }
subject do
render partial: 'application/header'
end
before { stub_helper_method }
def stub_helper_method
controller.singleton_class.class_exec do
helper_method :user_logged_in?
define_method :user_logged_in? do
'stub'
end
end
end
context 'not signed in' do
before do
allow(view).to receive(:user_logged_in?).and_return(false)
end
it do
is_expected.to have_link 'ログイン', href: new_user_session_path
end
end
純粋に以下のみで試みると
allow(view).to receive(:user_logged_in?).and_return(false)
=> does not implement: user_logged_in?
と返されるため。