0

Padrinoの管理セクションにコントローラーを追加していますが、現在のユーザーまたはFactoryGirlまたはMochaとのセッションをスタブする方法を理解できません。

現在のセッションを必要とするコントローラーアクションをテストするための良い方法は何ですか?

4

2 に答える 2

0

警告:私はPadrinoを使用していません。また、試したコードも提供していないため、これは非常に一般的で曖昧です。


代替案1

セッションをスタブ化するのではなく、Cookiejarを設定するCapybaraのようなテストフレームワークを使用してください。ログインを実行するブロックでRSpecshared_contextを使用beforeafterます。

カピバラの正確な構文を覚えていないので、調べてみますが、次のようになります。

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 

代替案2

を使用して、この答えRack::Testを見てください

代替案3

ここに認証ヘルパーlogged_in?があるので、戻ってユーザーをdoubleに戻すためにスタブするtrue必要がcurrent_accountあります(それがFactoryGirlからであろうと、letまたはどこからであろうと)。そうすれば、アプリはセッションからの情報を要求しません。

于 2013-03-26T12:21:18.410 に答える
0

このソリューションは機能しているようです

def set_current_user(user)
    ApplicationController.stub(:current_user).and_return(user)
    session[:identity_id] = user.id
end
于 2013-04-17T08:37:58.137 に答える