ruby-on-rails-3 – 使用设计的RSpec测试:找不到有效的映射
发布时间:2020-12-17 02:52:23 所属栏目:百科 来源:网络整理
导读:我试图用设计1.3.4运行控制器规格. (和工厂女孩) 我按照git wiki中的说明进行了项目.我能够使用在宏中创建的login_user方法以用户身份登录,但login_admin失败并出现以下错误: ...sign_in Factory.create(:admin)Could not find a valid mapping for #User i
我试图用设计1.3.4运行控制器规格. (和工厂女孩)
我按照git wiki中的说明进行了项目.我能够使用在宏中创建的login_user方法以用户身份登录,但login_admin失败并出现以下错误: ... sign_in Factory.create(:admin) Could not find a valid mapping for #<User id: 2023,email: "admin1@gmail.com",.... > 厂: Factory.define :user do |f| f.sequence(:username) {|n| "user#{n}"} f.sequence(:email) {|n| "user#{n}@gmail.com"} f.email_confirmation {|fac| fac.email } f.password "a12345Den123" f.password_confirmation "a12345Den123" # f.admin 0 end Factory.define :admin,:class => User do |f| f.sequence(:username) {|n| "admin#{n}"} f.sequence(:email) {|n| "admin#{n}@gmail.com"} f.email_confirmation {|fac| fac.email } f.password "a12345Den123" f.password_confirmation "a12345Den123" f.admin 1 end 控制器宏模块: module ControllerMacros def login_admin before(:each) do @request.env["devise.mapping"] = Devise.mappings[:user] #it should map to user because admin is not a model of its own. It produces the same result either way. @admin = Factory.create(:admin) sign_in @admin end end def login_user before(:each) do @request.env["devise.mapping"] = Devise.mappings[:user] @user = Factory.create(:user) sign_in @user end end end 路线 devise_for :users devise_for :admins,:class_name => 'User' 一种解决方案是设置cache_classes = false,但这并不理想,因为我使用spork并且不希望在更改模型后重新启动它. 有帮助吗? 解决方法
我的路线中有这样的东西:
devise_for :accounts,:controllers => {:confirmations => "confirmations"} do put "confirm_account",:to => "confirmations#confirm_account" get "login" => "devise/sessions#new",:as => :login delete "logout" => "devise/sessions#destroy",:as => :logout get "register" => "devise/registrations#new",:as => :register end 所以在我的spec / support / controller_macros.rb中我需要改变: def login_account before(:each) do @request.env["devise.mapping"] = Devise.mappings[:account] @account = Factory.create(:account) sign_in(@account) end end 至 def login_account before(:each) do @request.env["devise.mapping"] = Devise.mappings[:account] @account = Factory.create(:account) sign_in(:account,@account) end end 注意sign_in(范围,资源) 我希望这有帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |