简单的问题。
我的 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自动类加载。但不确定在Rspec中使这项工作的最佳方法是什么。
答案 0 :(得分:0)
有多种方法可以解决这个问题,但请先给我一些背景知识。
您可以配置rails,告诉您使用include_all_helpers
向控制器和视图中公开哪种帮助程序。
在过去,您在ApplicationController中调用了helper :all
。
这就是这些方法暴露的方式。
回到你的问题:
解决方案numero uno:helper.stub(current_user: build(:user))
解决方案号码:helper.extend UserHandling
帕戈