KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I am trying to stub a method on a helper that is defined in my controller. For example: class ApplicationController < ActionController::Base def current_user @current_user ||= authenticated_user_method end helper_method :current_user end module SomeHelper def do_something current_user.call_a_method end end In my Rspec: describe SomeHelper it "why cant i stub a helper method?!" do helper.stub!(:current_user).and_return(@user) helper.respond_to?(:current_user).should be_true # Fails helper.do_something # Fails 'no method current_user' end end In spec/support/authentication.rb module RspecAuthentication def sign_in(user) controller.stub!(:current_user).and_return(user) controller.stub!(:authenticate!).and_return(true) helper.stub(:current_user).and_return(user) if respond_to?(:helper) end end RSpec.configure do |config| config.include RspecAuthentication, :type => :controller config.include RspecAuthentication, :type => :view config.include RspecAuthentication, :type => :helper end I asked a similar question here , but settled on a work around. This strange behavior has creeped up again and I would like to understand why this doesnt work. UPDATE : I have found that calling controller.stub!(:current_user).and_return(@user) before helper.stub!(...) is what is causing this behavior. This is easy enough to fix in spec/support/authentication.rb , but is this a bug in Rspec? I dont see why it would be expected to not be able to stub a method on a helper if it was already stubbed on a controller.
Tags (comma-separated)
Save Edits
Cancel