2014-01-20 111 views
0

簡單的問題。Rails rspect幫助器方法未找到

我在ApplicationHelper的方法調用我的SessionsHelper加載在我運行的應用程序的CURRENT_USER

module ApplicationHelper 
    def some_helper_method 
    if current_user.respond_to? :some_method 
    #does stuff 
    end 
    end 
end 


module SessionsHelper 
    def current_user=(user) 
    @current_user = user 
    end 

    def current_user 
    @current_user ||= User.find(...) 
    end 

這工作得很好。但是,從Rspect運行時,ApplicationHelper方法找不到current_user方法。在運行的應用程序中,我知道該方法可以通過一些rails automagic class加載。但不知道在Rspec中完成這項工作的最佳方法是什麼。

+0

這將無法找到它在上面的代碼,通過。 ApplicationHelper如何「知道」current_user在SessionHelper中 –

回答

0

處理這個問題有多種方法,但讓我先給你一些背景知識。

你可以配置rails來告訴它你要暴露給你的控制器並在你的視圖中使用include_all_helpers什麼樣的助手。

過去,您在ApplicationController中調用了helper :all

所以這就是如何暴露這些方法。

回到你的問題:

解決方案頭兒:helper.stub(current_user: build(:user))

解決方案NUMERO原因:helper.extend UserHandling

帕戈