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 回答