如何测试设计gem before_filter:authenticate_user!行为

时间:2013-11-05 21:26:53

标签: ruby-on-rails-3 rspec tdd

我正在使用 rspec 测试我的应用,我需要一个使用设计宝石测试的提示。 测试权限以查看某些路径的最佳方法是什么。

例如,我在ProductController中有这个回调

before_filter :authenticate_user!, :except => [:show, :index]

我需要这样的事情

before (:each) do
    @user = User.create!({
      :name => 'Test User',
      :email => 'user@test.com',
      :password => 'pleaseletmein',
      :password_confirmation => 'pleaseletmein' 
      })
    sign_in @user
  end

 before ([:create, ....]) do
    sign_out @user if @user
  end

let(:valid_session) { {"warden.user.user.key" => session["warden.user.user.key"]} }
let(:un_valid_session) { {} }
.....

describe "create" do
  it "....." do
    get(:create, {}, un_valid_session)
    response.should redirect_to(root_path)
.....

或分享你测试这种行为之王的方式。

1 个答案:

答案 0 :(得分:1)

看一下rails3-bootstrap-devise-cancan项目。 有功能文件夹,其中包含您需要的几乎所有 https://github.com/RailsApps/rails3-bootstrap-devise-cancan/tree/master/features