使用 Rspec 2 和 Devise 测试 Rails 3 中的助手

2023-12-28

我的帮助程序代码如下所示(并且工作正常):

module ProvidersHelper
  def call_to_review(provider)
    if user_signed_in? && review = Review.find_by_provider_id_and_user_id(provider.id, current_user.id)
      link_to "Edit Your Review", edit_provider_review_path(provider, review), :class => "call_to_review"
    else
      link_to "Review This Provider", new_provider_review_path(provider), :class => "call_to_review"
    end
  end
end

不幸的是,当我运行测试时,这会产生以下错误:

 undefined method `user_signed_in?' for #<ActionView::Base:0x00000106314640>
 # ./app/helpers/providers_helper.rb:3:in `call_to_review'

显然Devise::Controllers::Helpers当 rspec 运行测试时,没有包含在我的助手中。有什么建议可能有助于这项工作吗?

编辑:为了提供更多信息,我的 spec_helper 确实有这个:

config.include Devise::TestHelpers, :type => :controller
config.include Devise::TestHelpers, :type => :view
config.include Devise::TestHelpers, :type => :helper

(遗憾的是,我无法让它与:type => [:controller, :view, :helper])

无论如何,我相信这些行添加了sign_in(scope, object)(和其他)测试助手。他们不会添加您在控制器/视图代码中实际利用的帮助器。


我认为 rspec 的理念是尽可能完全隔离地测试视图/助手/模型。所以在这种情况下,我会删除user_signed_in?并返回false or true我的结果应该适当改变。 这为您提供了一个干净的隔离测试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Rspec 2 和 Devise 测试 Rails 3 中的助手 的相关文章

随机推荐

  • 如何从活动视图 Laravel 生成 PDF

    I have a search box when user input roll no it returns the specific student result I want to generate PDF of that search
  • 使用 MEF 时 Type.GetType 返回 null

    我目前正在使用 MEF 来导入插件的项目 因为插件是用 WPF 编写的 它们每个都有一个视图和一个视图模型 插件了解视图模型 但主 shell UI 将使用约定优于配置类型模式来构造视图并绑定视图模型 我使用了 Build your own
  • XSD 需要 XML 文档中存在特定的根元素吗?

    我想验证一个 XML 文件并确保它有一个名为的根元素speak像这样
  • 如何在 iOS 中创建不属于 Unicode 的下标字符

    我已经尝试创建一个带有下标字符的 NSString 一段时间了 但没有成功 在 iOS 中是否可以做到这一点 我需要一种方法将字符串中的字符更改为下标或上标 但我无法为此使用 Unicode 因为 Unicode 不包含所有字母 我的猜测可
  • 何时决定在java中使用静态函数[重复]

    这个问题在这里已经有答案了 何时决定使用静态函数 当我的函数仅在同一个类中调用时 是否需要将其设为静态 作为搜索 我找不到完整清晰的声明 静态方法或变量不仅仅是一个对象的一部分 它们是与声明类相同类型的所有实例的一部分 当您在类中将函数声明
  • “str”对象没有属性“get”

    我正在研究 Django 中的 Braintree 集成 我已经关注了本指南 https www braintreepayments com docs python guide getting paid 但是 我收到错误 str objec
  • 更改 Tomcat Web 应用程序上下文

    我有一个网络应用程序 它是在根上下文 下设计并始终工作的 所以所有css js和链接开头 例如 css style css 现在我需要将此 Web 应用程序移动到一些不同的上下文 比方说 app1 很容易改变server xml配置文件并在
  • 为什么要指定函数返回类型?

    大多数时候我读到我们应该尽可能多地使用类型推断 当编写函数时 我知道我们必须输入参数 因为它们无法推断 但为什么我们必须输入返回值 TypeScript 正在处理这个问题 显式键入函数的返回值有什么好处 到目前为止 我只读到我应该这样做 但
  • Delphi 2006 不允许在记录方法中使用记录类型的 const 参数?

    UPDATE 简单的解决方法 方法 运算符字段之前的数据字段 今天我尝试使用我能做的最简单的例子来重现这个错误 我从一个基本记录 TBasicRecord 开始 只有简单的设置和打印方法 没有运算符 并且传递 const x TBasicB
  • 如何查找 FileField Django 图像的高度和宽度

    如果我们的模型定义如下 如何找到图像的高度和宽度 class MModel document FileField format type CharField 并且图像保存在文档中 那么如果它是图像 我们如何找到文档的高度和宽度 如果文件始终
  • AWS CodePipeline:在 CodeBuild 中获取 CloudFormation 输出

    我正在使用 AWS CodePipeline Cloudformation 和 CodeBuild 学习一些开发运营技术 我的 简化的 管道是这样的 推送到 github 存储库会触发管道 CloudFormation 构建 更新后端基础设
  • 如何在Python中获取视频文件的方向

    我想将视频文件的帧加载到 numpy 数组中 我希望帧正确直立 这意味着我需要读取视频文件中的方向元数据 并相应地旋转加载的帧 我有一种加载帧的方法 opencv 的 python 绑定 所以我需要的是一种读取视频文件的方向元数据的方法 我
  • 在 Angular2 组件样式表中覆盖 Bootstrap 中的样式

    我有一个 Angular2 应用程序 使用 Angular CLI 构建 其中包含多个组件 每个组件都有一个引用的样式表 scss 这些样式表中的独特样式已正确应用于组件模板 我不能做的是覆盖来自外部 CSS 的样式 这些样式包含在这些组件
  • 在 exec() 中定义的回调期间关闭丢失

    这是我使用 Python 的第三天 所以请原谅新手的错误 这是我的工作代码 person test 向老板注册回调 老板调用回调 一切正常 class Boss def registerCallback self cb self cb cb
  • 可以将方程的表达式放在其图形表示附近吗?

    当我在 Mathematica 中绘制一个函数时 它是否有可能自动将其方程 即 y 2x 或什至其他文本放在其附近 乍一看我没有找到任何选项 但如果有的话我想知道 Thanks 使用 Mathematica 6 或更高版本 我经常使用Too
  • 在不使用 strcmp 的情况下将 char* 与字符串进行比较

    我正在尝试将 char 的内容与字符串进行比较 我可以打印内容 但无法比较它们 include
  • eclipse ubuntu 18.04安装java.lang.ClassNotFoundException:

    安装了eclipse和Java8 但它不起作用 当尝试运行它时 会发生以下错误 发生了错误 看日志文件 home shield eclipse org eclipse platform 3 8 155965261 configuration
  • Laravel 资源通过 ajax 销毁

    我可以通过ajax使用资源吗 我有这个资源 Route resource dashboard DashBoardController js file ajax type delete dataType json data id id url
  • 仅授予视图权限

    我的数据库中有一个用户 我想授予他只读一个视图的权限 仅此而已 没有表 什么都没有 我怎样才能做到这一点 多谢 PS 我使用的是 MS SQL Server 2005 USE DB1 GRANT SELECT ON OBJECT View1
  • 使用 Rspec 2 和 Devise 测试 Rails 3 中的助手

    我的帮助程序代码如下所示 并且工作正常 module ProvidersHelper def call to review provider if user signed in review Review find by provider