rspecテストコントローラでdevise認証に問題があります。私merchants_controller_spec.rbで、私は私のspec_helper.rbにrspecコントローラのテストでデバイス認証
を
config.include Devise::TestHelpers, :type => :controller
が含まれている
私は次のセットアップ
を持って
describe MerchantsController do
before :each do
@user = Factory(:user)
@merchant = Factory(:merchant, :user_id => @user.id,:is_approved => false, :is_blacklisted => false)
controller.stub!(:current_user).and_return(@user)
end
describe "GET index" do
it "assigns all merchants as @merchants" do
merchant = Factory(:merchant,:is_approved => true, :is_blacklisted => false)
get :index
assigns(:merchants).should eq([merchant])
end
end
end
マイmerchants_controller.rb
class MerchantsController < ApplicationController
before_filter :authenticate_user!
def index
@merchants = Merchant.approved
debugger
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @merchants }
end
end
end
私は商人のモデルに
scope :approved, where(:is_approved => true, :is_blacklisted => false)
を承認した範囲は今、私の問題は、私はCURRENT_USERをスタブとCURRENT_USERとして@user返され、私のmerchants_controllerインデックス仕様が失敗しているにもかかわらず、である持っています。しかし、私がauthenticate_userをコメントアウトすれば!仕様が合格、
authenticate_userなし!インデックスアクションのデバッガが捕捉されますが、authenticate_userを使用します。デバッガは捕捉されません。
current_userの下位に問題があると思いますが、それを把握することはできません。
は
私はcontroller.stubを置き換え:sign_inの@userと.and_return(@user) が、それでも(CURRENT_USERを)!私の問題は解決しません。私は、インデックスアクション内のデバッガはまだ捕らえられていないので、ユーザーはまだ認証されていないと思います。何か案は? – Gagan
私はこれを2回upvoteできますことを願っています。私は私の管理者を作成するネストされた工場を持っていた、と私はなぜユーザーが作成されていたが、ログインしていない把握することができませんでした。 – Arel