【发布时间】: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