:
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
は、その後の試験のためにあなたは、件名を呼び出すことによって、機能(コントローラ)仕様で、現在のユーザーにアクセスすることができます.current_userまたはsubject.current_admin、ここに行く:私はこれが動作すると思います
require 'spec_helper'
describe Users::SessionsController do
login_admin
describe "POST create" do
it "should logout admin" do
post :create, {:user => {:email => "[email protected]", :password => "secret"} }
subject.current_user.should_not be_nil
subject.current_admin.should be_nil
end
end
end
:https://github.com/plataformatec/deviseをテストヘルパーを含めることを確認するためには、このような何かを試してみてください。あなたはカピバラでこのようなことをどうやってテストしますか?それにも特定のヘルパーはいますか? – jignesh
ahh、良い質問、あなたがリクエスト仕様からcurrent_userにアクセスできないと知っている限り(そしてそれはおそらくベストプラクティスでもないでしょう)、アプリのビューの一部は、ユーザーがログインしているときとは異なる管理者、または何らかの種類のフラッシュ[:通知]を使って区別することができますか? –
上記のコード例では、subject.current_userのどちらかを実行できませんでしたか?私はflash /:noticeを使って、ユーザー/管理者にサインインされたことを知らされました。私はcapybaraでそれをキャプチャすることができました。 – jignesh