【问题标题】:Rails rspect helper method not found未找到 Rails rspec 辅助方法
【发布时间】:2014-02-10 08:16:41
【问题描述】:

简单的问题。

我的 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 中进行这项工作的最佳方法是什么。

【问题讨论】:

  • 在上面的代码中也找不到。 ApplicationHelper 如何“知道” current_user 在 SessionHelper 中

标签: ruby-on-rails


【解决方案1】:

有多种方法可以处理这个问题,但让我先给你一些背景知识。

您可以通过include_all_helpers 配置rails 来告诉它您将向控制器和视图中公开什么样的助手。

在过去,您可以在 ApplicationController 中调用 helper :all

这就是暴露这些方法的方式。

回到你的问题:

解决方案编号:helper.stub(current_user: build(:user))

到期的解决方案编号:helper.extend UserHandling

准备工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-11
    • 2012-12-30
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多