test du contrôleur rspec avec authentification

Je vais avoir des problème avec rspec de contrôleur de test le dispositif d'authentification.

J'ai une installation suivants

J'ai inclus

config.include Devise::TestHelpers, :type => :controller

dans mon spec_helper.rb.rb

Dans mon merchants_controller_spec.rb

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

Mon 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

J'ai une portée approuvée par les commerçants, modèle

scope :approved, where(:is_approved => true, :is_blacklisted => false)

Maintenant mon problème est que même si j'ai écrasé current_user et retourné @user comme current_user, Mon merchants_controller indice spec est un échec. Mais si j'en commentaire authenticate_user! puis le spec passe,

sans authenticate_user! le débogueur de l'action index est pris, mais avec authenticate_user! le débogueur n'est pas pris.

Je pense qu'il y a problème dans le substrat current_user et je ne suis pas en mesure de le comprendre.

M'aider..

source d'informationauteur Gagan