我的设备控制器 rspec 中的“创建后”问题

2023-11-27

[好吧……我的第一个问题,所以要温柔一点。]

我正在使用 devise 进行身份验证,但我有自己的控制器来扩展创建用户时发生的情况。我在注册(注册)时创建“用户”和“机构”。

在路线...

 devise_for :users, :controllers => {:registrations => "registrations"}

我的完整控制器...

 class RegistrationsController < Devise::RegistrationsController
   def create
     super # creates the @user
     @agency = Agency.create! params[:agency]
     @agency.users << @user
     @agency.owner = @user
     @user.agency = @agency
     @agency.save
     @user.account_admin = true
     @user.save
   end
 end

我的问题是我想设置一个 rspec 来检查此代码。该代码似乎可以正常工作,但我的目标是在规范中实现 100% 的代码覆盖率。这是我的全部规格...

 require 'spec_helper'
 describe RegistrationsController do
   render_views  
   describe "POST create" do
     it "creates an associated user" do
       @agency = Factory.create( :agency )
       @user = Factory.create( :user, :agency => @agency )
       User.stub(:new).with({'name' => 'pat'}) { @user }
       Agency.stub(:new).with({'name' => 'pat'}) { @agency }
       post :create, :user => {'name' => 'pat'}
       assigns(:user).should be(@user)
     end
   end
 end

但是,我在“创建后”时收到错误。这是错误消息

 Could not find devise mapping for path "/users?user[name]=pat"

这是(我认为)“耙路线”中的相关行

 user_registration POST   /users(.:format)  {:action=>"create",:controller=>"registrations"}

有什么想法吗?

pat


具体来说,从 @shanethehat 引用的链接中复制一个片段,该行

@request.env["devise.mapping"] = Devise.mappings[:admin]

解决了问题中提出的问题。只需将该行放入before_filter用于您的 Devise 风格的控制器测试。改变:admin到有问题的资源(通常:user)

有效的原因:描述一个SessionsController单独并不能唯一地标识特定的 Devise 资源。例如,如果您的应用程序有admin and user资源,您可能想要 2SessionsController(s) 具有 2 组规格 - 每种规格对应一种。

在这种情况下,为了让每个测试在正确的资源上运行,您需要告诉 Devise 您的哪一个SessionsController(s) 你的意思是每组例子。上面的行就是这样做的。

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

我的设备控制器 rspec 中的“创建后”问题 的相关文章

随机推荐

  • 当我尝试在 Web 应用程序中创建超过 250 个线程时,我收到 Cannot get a connection, pool error Timeout waiting foridle object [重复]

    这个问题在这里已经有答案了 可能的重复 连接池异常 无法获取连接 池错误等待空闲对象超时 当我尝试在 Web 应用程序中创建超过 250 个线程时 出现无法获取连接 池错误超时等待空闲对象错误 我正在使用 JSF 2 0 和 Hiberna
  • 使用实体框架更新语句

    简单的问题 在更新一个实体时是否可以使用实体框架实现此查询 update test set value value 1 where id 10 使用批量更新功能实体框架扩展库 像这样 dbContext Tests Update t gt
  • 在同一选择中使用列别名[重复]

    这个问题在这里已经有答案了 如何在同一查询的其他地方使用列别名 在Oracle中可以吗 使用 EMP ID 的示例 SELECT t1 DATE t2 NAME t1 ID TO NUMBER SUBSTR t1 NUMBER ID 6 T
  • 6 种基本算术运算的相对周期时间是多少?

    当我尝试优化我的代码时 很长一段时间我一直在使用一条经验法则 即加法和减法的值是 1 乘法和除法的值是 3 平方的值是 3 我很少使用更通用的规则 pow函数 所以我没有经验法则 平方根值 10 我假设数字的平方只是乘法 所以值 3 这是二
  • 如何从“签出但已删除”状态恢复文件?

    我试图签出一个文件 它进入 签出但已删除 状态 我无法撤消结账 也不知道下一步需要做什么 当我为此上网时 我发现了一篇文章IBM 网站结帐但已删除状态 但我没有尝试重命名文章中提到的文件名 但仍然出现错误 我使用的是 Clearcase 7
  • 使用 out/ref 与返回相比有什么好处?

    我正在使用 XNA 框架制作游戏 因此我使用了很多对向量进行操作的函数 尤其Vector2 64 位结构 让我困扰的是大多数方法都是用 ref 和 out 参数定义的 这是一个例子 void Min ref Vector2 value1 r
  • 在Python中,有没有办法以某种格式验证用户输入? [复制]

    这个问题在这里已经有答案了 在Python中 我要求用户输入一个办公室代码位置 其格式需要为 XX XXX 其中X是字母 我如何确保他们的输入遵循格式 并且如果不要求他们再次输入办公室代码 Thanks 标准 且与语言无关 的方法是使用常用
  • 这个 C++ 堆栈分配器有改进吗?

    对我的基于堆栈的分配器有什么建议吗 除了建议使用具有私有 公共成员的类 struct Heap void heap start void heap end size t max end Heap size t size heap start
  • 尝试获取类型 ICacheManager、键“缓存管理器”的实例时发生激活错误

    我似乎在这里碰壁了 希望能够得到任何有能力的人的帮助 我不太确定下面的错误消息是什么意思 我正在使用企业模式服务的缓存块 但我不断遇到以下问题 我下载了最新版本并尝试逐步解决该问题 但我似乎无法确定确切的问题 我需要帮助 提前致谢 Test
  • 在 Python 中,单击如何查看父命令具有必需参数的子命令的 --help?

    我的程序使用Click用于命令行处理 它有一个带有必需参数的主命令 该命令具有带有可选参数的子命令 不同的子命令采用不同的选项 但它们都需要来自其父命令的相同参数 我希望命令行看起来像这样 python myprogram py argum
  • heroku rake db:migrate > 没有要加载的文件 -- faker

    我第一次尝试将 Rails 3 应用程序部署到 Heroku 似乎可以向上推 但是当我尝试跑步时 heroku rake db migrate 我收到以下错误 rake aborted no such file to load faker
  • iOS 核心数据错误 - 一对多关系的值类型不可接受

    我对这个问题感到抓狂 这看起来应该是非常简单的事情 iOS Objective C 对我来说是新的 所以也许我只是没有掌握一些基本的东西 问题是我已经向核心数据模型添加了一个新实体 并建立了一对多关系 该模型已经有两个具有一对一关系的实体
  • 如何最好地测试 Java 代码?

    我自己一直在开发一个比较大的系统 这是我第一次开发大型系统 同时处理200 通道的信息 我知道如何使用 Junit 来测试每种方法 以及如何测试边界条件 但是 对于系统测试 我仍然需要测试所有接口 可能还需要测试一些压力测试 也许还有其他事
  • TakeUntil 未按文档说明工作?

    From 的文档TakeUntil操作员 强调我的 TakeUntil 订阅并开始镜像源 Observable 它还监视您提供的第二个 Observable 如果第二个 Observable 发出一个项目或发送终止通知 TakeUntil
  • 内拉伸 以适应窗口大小

    我正在尝试在 DOM 内拉伸 svg 文档以适应窗口大小 like so div div click to zoom div div
  • UITextView inputView

    我正在为 iPad 制作自定义输入法 我希望能够用我的输入法替换系统键盘 并通过该输入法输入文本 根据文档 我需要做的就是用我的视图设置 inputView 属性 它将用来代替系统键盘 我这样做了 就显示键盘而言 它有效 但我如何实际在文本
  • 如何使用 Nginx 将 404 请求重定向到 Django 单页应用程序中的主页?

    我有一个 Django 单页应用程序 目前 当您访问网站上不存在的 URL 时 会显示 404 错误 但是 在这种情况下 我想重定向到该网站的主页 我不确定我是否应该如何使用 Nginx 执行此操作 或者是否有办法在 Django 中执行此
  • 在 php 中循环时显示输出

    是否可以在无限循环中在浏览器上显示字符串 这就是我想要发生的事情 while 1 echo should display these lines on browser while in infinite loop br 对的 这是可能的 你
  • CORS 的概念以及我应该强制执行 Origin 标头吗?

    据我所理解CORS 无法以让您真正确定呼叫者是谁的方式来完全保护您 因为调用者可以发送他想要的任何 ORIGIN 标头 实际上我在某处读到你无法通过 javascript 设置原始标头 因为它是一个受限制的标头 但我不太确定这一点 无论如何
  • 我的设备控制器 rspec 中的“创建后”问题

    好吧 我的第一个问题 所以要温柔一点 我正在使用 devise 进行身份验证 但我有自己的控制器来扩展创建用户时发生的情况 我在注册 注册 时创建 用户 和 机构 在路线 devise for users controllers gt re