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.