jig*_*esh 4 devise capybara rspec2 ruby-on-rails-3
我在铁路应用程序中使用Devise.
我有两个模型:用户和管理员.
目前,如果我访问用户登录和管理员登录,我可以同时以用户和管理员身份登录.
如果其他人签到,我想强制注销一个.最好的办法是什么?
此外,如果有人有一个很好的方法来测试rspec/capybara,请分享!
谢谢
我会复制Devise控制器并添加一个之前的过滤器,如下所示:
class Users::SessionsController < Devise::SessionsController
before_filter :logout_admin, :only => "create"
def create
super
end
private
def logout_admin
# change :admin to :user in the admin's session controller
# the sign_out is a devise controller helper that forces sign out
sign_out :admin
end
end
Run Code Online (Sandbox Code Playgroud)
然后,对于测试,您可以通过调用subject.current_user或subject.current_admin访问功能(控制器)规范中的当前用户,请访问:https://github.com/plataformatec/devise以确保包含测试助手然后尝试这样的事情:
require 'spec_helper'
describe Users::SessionsController do
login_admin
describe "POST create" do
it "should logout admin" do
post :create, {:user => {:email => "tester@email.com", :password => "secret"} }
subject.current_user.should_not be_nil
subject.current_admin.should be_nil
end
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3626 次 |
| 最近记录: |