【问题标题】:Problem with "post create" in my devise controller rspec我的设计控制器 rspec 中的“post create”问题
【发布时间】:2011-04-23 17:38:19
【问题描述】:

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

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

在路线中...

 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"

这是(我认为)“rake routes”中的相关行

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

有什么想法吗?

拍拍

【问题讨论】:

  • 我发现(通过反复试验)将行 request.env["devise.mapping"] = Devise.mappings[:user] 添加到规范测试会导致该测试现在执行。但我真的不明白那条线的作用 - 所以 cmets 将不胜感激。

标签: ruby-on-rails rspec devise


【解决方案1】:

具体来说,从@shanethehat引用的链接中复制一个sn-p,行

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

解决了问题中提出的问题。只需将该行放入before_filter 即可进行设计风格的控制器测试。将:admin 更改为有问题的资源(通常为:user

有效的原因:单独描述 SessionsController 并不能唯一标识特定的设计资源。例如,如果您的应用有 adminuser 资源,您可能希望有 2 个 SessionsController(s) 和 2 组规范 - 每种资源类型各有一个。

在这种情况下,对于要在正确的资源上运行的每个测试,您需要告诉 Devise 对于每组示例,您指的是您的 SessionsController(s) 中的哪一个。上面的行就是这样做的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多