Stub-Helfer-Methode mit rspec nicht möglich

Ich versuche, eine in meinem Controller definierte Methode für einen Helper zu erstellen. Zum Beispiel:

<code>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
</code>

In meiner Rspec:

<code>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
</code>

Imspec/support/authentication.rb

<code>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
</code>

Ich habe eine ähnliche Frage gestelltHier, aber entschied sich für eine Arbeit um. Dieses seltsame Verhalten hat sich wieder eingeschlichen und ich würde es gerne verstehenWarum Das funktioniert nicht.

AKTUALISIEREN: Ich habe diese Berufung gefundencontroller.stub!(:current_user).and_return(@user) Vorhelper.stub!(...) ist das, was dieses Verhalten verursacht. Dies lässt sich leicht behebenspec/support/authentication.rb, aber ist das ein Fehler in Rspec? Ich verstehe nicht, warum erwartet wird, dass eine Methode auf einem Helfer nicht gestubpt werden kann, wenn sie bereits auf einem Controller gestubpt wurde.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage