使用 Rails 和 Devise 进行功能测试。我的灯具中应该放什么?

2024-01-21

您好,我想对使用 Devise 和 CanCan 的 Rails 3 应用程序进行一些功能测试。

在我的用户模型中,我有用户年龄,我想测试用户只能访问特定页面,如果他们是:

  1. 登录
  2. Over 35

我在 Devise 文档中看到我可以使用: *sign_in* 并且我已将其放入我的测试中并且它似乎有效 - 测试不会出错,因为我有:

include Devise::TestHelpers

在我的 *test_helper.rb* 中

当我取出它时,我的测试出错,因为 *sign_in* 未定义。所以这不是一个辅助问题。

当我运行测试并检查是否跨度#loggedin有 1 次出现,测试失败,因为出现 0 次。跨度#loggedin仅出现*如果用户登录?*

我需要在我的装置或测试中添加什么来创建一个同时也是完全注册用户(已确认等)的测试用户?

查看代码:

<% if user_signed_in? %>
     <span id="loggedin">User is signed in</span>
     User age is <span id="age"><%= current_user.age.to_s %></span>
<% end %>

测试代码:

test "should get index" do
    sign_in :one
    get :index
    assert_response :success
    assert_select 'span#loggedin', :count => 1
end

Fixture:

one:
 email: [email protected] /cdn-cgi/l/email-protection
 age: 36

当我手动登录时,它在开发中工作正常,但我希望将其全部自动化 - 真正的测试点!


Devise 3.2.0 之前版本的解决方案

我想这可能就是您正在寻找的:

User.new.send(:password_digest, 'password')

当盐为零时它起作用。

因此在你的装置中你可以这样做:

one:
  email: '[email protected] /cdn-cgi/l/email-protection'
  encrypted_password: <%= User.new.send(:password_digest, 'password') %>

Devise 版本 3.2.0 至 3.5.0 的解决方案

在 Devise 3.2.0 中,方法正是为此目的而创建的 https://github.com/plataformatec/devise/commit/31971e69e6a1bcf6c7f01eaaa44f227c4af5d4d2(@Inkling 更新)。对于这些版本,encrypted_pa​​ssword 应如下定义:

encrypted_password: <%= Devise.bcrypt(User, 'password') %>

where User是您的用户模型的类别。

请注意,这仅适用于您使用默认加密算法 (bcrypt) 的情况。


Devise 3.5.1 及以上版本的解决方案

As 卡塔齐娜 https://stackoverflow.com/users/1576481/katarzyna已指出:Device.bcrypt 已被弃用 https://github.com/plataformatec/devise/commit/a8769933d1842e8dff1a625d202f693403663e12#diff-19b4dd928714c72f1338874351e8ff2d在版本 3.5.1 中。从该版本开始,encrypted_pa​​ssword 应如下定义:

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

使用 Rails 和 Devise 进行功能测试。我的灯具中应该放什么? 的相关文章

  • Rails/Passenger/Node.js:ExecJS“找不到 JavaScript 运行时”

    我正在尝试使用 Node js 作为我的 Rails 应用程序的 JavaScript 运行时 我在 Ubuntu 12 0 4 上使用 Phusion Passenger 模块和 Nginx 作为我的 Web 服务器 每次我访问 Rail
  • 没有路线匹配... Rails Engine

    所以我不断收到错误 No route matches action gt create controller gt xaaron api keys 测试中抛出的是 it should not create an api key for th
  • Rails 中带有 text_field 的逗号分隔数组

    我有一些users可以有很多posts 并且每个帖子都可以有很多tags 我已经使用一个实现了拥有并属于许多帖子和标签之间的关系 创建新帖子时 用户可以使用逗号分隔的值列表对其进行标记 就像在 SO 上发布新问题时一样 如果任何标签尚不存在
  • Delayed_job不会运行用户定义的方法

    我一直在尝试让 DelayedJob 在后台运行一些用户定义的方法 对于这个测试用例 我在助手中定义了以下方法 def test case u User new u first name JimBob u last name joe u e
  • Rails:统计用户未读通知的数量

    我目前有一个处理用户活动通知系统的活动模型 当发生某些操作 例如创建新文章 时 活动观察者会创建一个新活动 现在我想记录当前用户尚未看到的这些活动通知中有多少 类似于 facebook 上的通知宝石 每次用户单击通知链接时 数字应重置为 0
  • 使用 Rails 4(和 Hstore)在 PostgreSQL 中存储嵌套哈希

    我有一个 Rails 应用程序 它聚合了来自 Google API 的大量数据 我当前将 JSON 响应存储在 MongoDB 中 因此我的 Rails 应用程序同时具有 pg 和 mongo 然而 今天 我遇到了 PostgreSQL H
  • Ruby on Rails 基本概念总结

    作为 Rails 的新手 我很难找到提供 Ruby on Rails 概要的网站或参考资料 我对 MVC ActiveRecord 以及诸如此类的东西有基本的了解 但我很难理解其中的一些关系和基础知识 例如 我需要注意哪些命名约定 控制器操
  • 强制执行 has_many 但当前只有一个关联的“rails 方式”是什么?

    我有一个简单的 Rails 应用程序 其中包含模型项目和阶段 一个项目有许多阶段 但一次只能有一个阶段处于活动状态 即 当前 我仍然希望其他阶段可以访问 但当前阶段应该是应用程序的主要锚点 关于如何实现此要求的决定对我如何处理模型访问 验证
  • 如何避免ActiveRecord模型双重保存?

    型号 一 class One lt ActiveRecord Base before save do stuff private def do stuff two Two find 8 two field2 Value two save e
  • 部署到 Heroku 时出现“rake 中止!堆栈级别太深”

    我的网站曾经运行正常 Heroku 预编译了资产和所有内容 现在 似乎不知从何而来 我开始在部署时收到此消息 Preparing app for Rails asset pipeline Running rake assets precom
  • rvm + Rails3 + gmaps4rails -acts_as_gmappable

    我是一个红宝石导轨之类的菜鸟 抱歉 如果我的问题很愚蠢 我设置了一个运行 ruby 1 8 7 p334 的 rvm 作为用户 环境 我已经为我的 应用程序 创建了一个 gemset 现在我想在页面上显示地址的地图 我四处寻找 发现了 gm
  • 使用 Ruby Curb 传递 GET 参数

    我正在尝试使用 Curb curb rubyforge org 调用需要在 get 请求中提供参数的 RESTful API 我想获取一个像这样的URLhttp foo com bar xml bla blablabla 我希望能够做类似的
  • 寻找在 Ruby on Rails 中构建安全 REST API 的建议

    我正开始为我正在从事的项目构建 REST API 这促使我对使用 RoR 构建 API 的最佳方法进行了一些研究 我很快发现 默认情况下 模型是向世界开放的 只需在 URL 末尾添加 xml 并传递适当的参数即可通过 URL 进行调用 那么
  • Rails3,从 cron 运行 rake 任务

    我从 cron 运行 rake 任务时遇到问题 我将其包装在 shell 文件中 当我从控制台执行此 shell 文件时 它工作正常 bin sh if ps ef grep v grep grep create all accounts
  • Rails 4 - 如何在活动记录查询中为includes()和joins()指定别名

    我如何给出别名 例如includes 给出如下 用户 活动记录模型 Student 活动记录模型 继承自User STI Teacher 活动记录模型 继承自User STI 项目 活动记录模型 这里有一些例子 第一个案例 更多性传播感染协
  • 在 Rails 中实现友谊模型的最佳方式

    我想在我的应用程序中实现用户的朋友系统 所以我发现 Rails 空间解决方案非常好 其想法是创建两行 in the Friendships table 第一行为发送者邀请 第二行为接收者 用户之间的关系设置为has many像这样的协会 h
  • 我应该在 Heroku 上部署 Ruby on Rails 应用程序吗?

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 关于我自己的一些情况 我今年 24 岁 去年从北卡罗来纳州立大学毕业 获得了分析硕士学位 统计 数学之类的 我没有很强的编程背景 这对我的问题非
  • Rails 中多表单复选框的数据库结构

    我正在开发一个 Rails 应用程序 允许用户创建时间表 这样做时 他们应该能够选择事件发生在一周中的哪几天 我计划在表单中执行此操作的方式是每个工作日旁边有一个复选框 如下所示 etc 然而 我发现这可能不是处理这个问题的非常有效的方法
  • 使用 Squeal 时可以有条件地在 where 块中添加子句吗?

    首先 我使用 Rails v3 2 9 和 Squeel 1 0 13 这就是我想要做的 我想使用三项身份信息中的任何一项来搜索客户 姓名 出生日期 dob 和社会保险号码 sin 结果集必须包括具有任何标识符 条件的 OR 的任何记录 我
  • 使用 DataMapper 而不是 ActiveRecord [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐

  • 如何将 React App 嵌入到另一个网站

    我有一个旧网站在服务器 x 上运行 现在一个React App已经开发出来了 在y服务器上 该网站应显示 React App 我已经搜索并阅读了有关该主题的几篇文章 但到目前为止没有成功 目前唯一有效的解决方案是 iframe 但我们不想要
  • 如何从用 Java 编写的 Azure Function App 连接到 PostgreSQL?

    我有一个 Azure 函数应用程序 其中有一个用 Java 编写的计时器触发函数 我需要连接到部署在其中一台 Azure VM 上的 PostgreSQL 此处不使用托管 Postgres 我的代码 import java sql publ
  • R:plm——年度固定效应——年度和季度数据

    我在设置面板数据模型时遇到问题 这是一些示例数据 library plm id lt c 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 year lt c 1999 1999 1999 1999 2000 2000 200
  • Java 的 SQL 解析器库 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • AutoFac中是否可以获取容器类型

    例如 我在类型的构造函数中使用一个参数注册了类 C1System Type 我有另一个类 C2 其中注入了 C1 类型的参数 我想收到typeof C2 自动在 C1 构造函数中 以某种方式有可能吗 示例代码 public class C1
  • 如何查找网络机器名称和登录该机器的用户?

    我必须找到机器名称以及登录机器的用户名 I have Updated My answer please see my answer NetworkBrowser nb new NetworkBrowser IPHostEntry ip Dn
  • 每台服务器的带宽摘要

    我正在尝试获取我帐户下所有 Softlayer 服务器的带宽数据 谢谢account servers rb我能够获取所有服务器的服务器 ID 现在我想获取服务器在特定时间范围内使用的带宽 我感兴趣的数据是 http sldn softlay
  • 如何根据 R 中的条件填充数据框

    我创建了一个像这样的空数据框 id Alyr Crub Lala Brap Bole Spar Esal Aara Thas 1 XLOC 003940 TBH 1 NA NA NA NA NA NA NA NA NA 我想看看是否id和列
  • Kubernetes DNS 在 Kubernetes 1.2 中失败

    我正在尝试在 Centos 7 上的 Kubernetes 1 2 中设置 DNS 支持 根据文档 https github com kubernetes kubernetes tree master cluster addons dns
  • 查找具有相似文本的文章的算法

    我在数据库中有很多文章 带有标题 文本 我正在寻找一种算法来找到 X 个最相似的文章 例如当你提出问题时 Stack Overflow 的 相关问题 我尝试用谷歌搜索这个问题 但只找到了有关其他 相似文本 问题的页面 例如将每篇文章与所有其
  • PHP 中大括号之间的匹配文本

    直接跟进上一个question https stackoverflow com questions 413071 regex to get string between curly braces i want whats between t
  • MSI 安装程序 InstallValidate 如何确定正在使用的文件?

    我正在尝试找出如何防止重新启动管理器在卸载应用程序时检测到需要重新启动 我的应用程序有一个 Windows 服务 它使用本机 DLL Tanuki Wrapper 并创建另一个写入一些日志文件的进程 Java 我正在使用 WiX Tools
  • 在 Scala 中创建使用枚举作为键的 Map 的语法是什么?

    请参阅下面的代码 此行被 Eclipse 标记为不正确 var map Map MyEnum Point 我正在尝试做 Java 的 scala 等价物 private enum Letters A B C private Map
  • 2014 年 1 月 17 日最新的 Google Chrome 更新触发页面无响应警报

    我的项目是用 net v4 0构建的 自上周 Chrome 浏览器更新以来 每个页面都会触发 页面无响应 警报 无论页面是否使用 ajax 该警报都会出现在每个页面上 这不可能只影响我的项目 有没有人对如何解决这个问题有任何建议 所有其他浏
  • 删除 httpOnly cookie - Express

    是否可以删除设置为的浏览器cookieHttpOnly true 我的登录端点很简单 如下所示 async login Ip ipAddress Request req Res res Response const auth await t
  • pandas 中的简单交叉表

    我偶然发现pandas http pandas pydata org 它看起来非常适合我想做的简单计算 我有 SAS 背景 并认为它会取代 proc freq 看起来它会扩展到我将来可能想做的事情 然而 我似乎无法专注于一项简单的任务 我不
  • 如果我使用“if (android.os.Build.VERSION.SDK_INT>=11)”是否需要反射

    我正在开发一个面向 API 11 3 0 的应用程序 但 minSDKVersion 是 7 2 1 我以编程方式生成 PreferenceActivity 而不是使用 XML 在 Honeycomb 中 首选项布局有一个内置图标位置 可以
  • 适用于 iPhone、Android 和 Blackberry 的移动开发

    我最近偶然发现了 PhoneGap 我喜欢这个概念 但我无法在 Android 应用程序上进行第一次尝试 该文档跳过了一些细节 注释中充满了遇到问题的人 有人正在运行 PhoneGap 吗 你对 Android 做了什么调整 大约有 3 种
  • 使用 ubuntu 构建 dockerfile 时无法安装 libmysqlclient-dev 包

    我的 Dockerfile 中有以下内容 FROM ubuntu latest RUN apt get update RUN apt get install y python pip libmysqlclient dev 我得到了这个输出
  • 使用 Rails 和 Devise 进行功能测试。我的灯具中应该放什么?

    您好 我想对使用 Devise 和 CanCan 的 Rails 3 应用程序进行一些功能测试 在我的用户模型中 我有用户年龄 我想测试用户只能访问特定页面 如果他们是 登录 Over 35 我在 Devise 文档中看到我可以使用 sig