1

私は単純なユーザーログインシステムを持っています:

module SessionsHelper
  def logged_in?
    current_user.present?
  end

  def current_user
    @current_user ||= begin
                        if session[:current_user_id]
                          User.find(session[:current_user_id]) rescue nil
                        end
                      end
  end
end

ApplicationController に含めます:

class ApplicationController < ActionController::Base
  include SessionsHelper
  helper SessionsHelper

バナーコントローラーをテストしようとしています:

require 'spec_helper'
describe Admin::BannersController do
  describe 'POST create' do
    let(:user){  create(:user_admin) }
    before do
      controller.stub(:current_user){ user }
    end

    it "create action should render new template when model is invalid" do
      Banner.any_instance.stubs(:valid?).returns(false)
      post :create
      response.should render_template(:new)
    end

:user_admin は、適切に設定された Factory Girl 管理者ユーザーです。

ただし、テストにはまだ次のように表示されます。このページにアクセスする権限がありません。 カンカンからです。

私はそれを適切にスタブしませんでしたか?ありがとう。

4

1 に答える 1

2
  def fake_user
    user = FactoryGirl.build(:user, :id => 100000 + rand(100000))
    stub(controller).current_user { user }
    user
  end
于 2012-04-20T07:36:37.813 に答える