Padrinoの管理セクションにコントローラーを追加していますが、現在のユーザーまたはFactoryGirlまたはMochaとのセッションをスタブする方法を理解できません。
現在のセッションを必要とするコントローラーアクションをテストするための良い方法は何ですか?
Padrinoの管理セクションにコントローラーを追加していますが、現在のユーザーまたはFactoryGirlまたはMochaとのセッションをスタブする方法を理解できません。
現在のセッションを必要とするコントローラーアクションをテストするための良い方法は何ですか?
警告:私はPadrinoを使用していません。また、試したコードも提供していないため、これは非常に一般的で曖昧です。
セッションをスタブ化するのではなく、Cookiejarを設定するCapybaraのようなテストフレームワークを使用してください。ログインを実行するブロックでRSpecshared_contextを使用before
しafter
ます。
カピバラの正確な構文を覚えていないので、調べてみますが、次のようになります。
shared_context "When logged in" do
before do
visit "/login"
fill_in "username", user.name
fill_in "password", user.password
click "login!"
end
after do
# log out…
end
end
describe "Something that you need to be logged in for" do
let(:user) { OpenStruct.new({name: "blah", password: "blurgh" }) }
include "When logged in"
before do
visit "/only/authenticated/see/this"
end
subject { page }
it { should be_ok }
it { #… }
end
を使用して、この答えRack::Test
を見てください
ここに認証ヘルパーlogged_in?
があるので、戻ってユーザーをdoubleに戻すためにスタブするtrue
必要がcurrent_account
あります(それがFactoryGirlからであろうと、let
またはどこからであろうと)。そうすれば、アプリはセッションからの情報を要求しません。
このソリューションは機能しているようです
def set_current_user(user)
ApplicationController.stub(:current_user).and_return(user)
session[:identity_id] = user.id
end