2013-08-05 66 views
2

我需要測試它具有有一項認證過濾器視圖的內容before_filter :authenticate_user!Rspec的 - 色器件 - 導軌:用戶會話

當我運行測試,應用程序沒有登錄的用戶,並重定向到/用戶/ sign_in。然後測試在這個視圖上搜索內容。

如何使用FactoryGirl模擬用戶會話或跳過此篩選器以進行測試,沒有

在此先感謝

回答

1

看一看ControllerMacros

module ControllerMacros 
    def login_user 
    before(:each) do 
     user = FactoryGirl.create(:user) 
     @current_user = user 
     sign_in user 
    end 
    end 
end 

規格/ spec_helper.rb

RSpec.configure do |config| 
    .... 
    config.extend ControllerMacros, :type => :controller 
end 

規格/控制器/ some_controller_spec.rb

require File.dirname(__FILE__) + '/../spec_helper' 

describe SomeController, "index" do 
    context "for authenticated users" do 
     login_user 
     ... 
    end 
end 

,當你有控制器,它是非常有用的基於不同用戶角色的邏輯。

+0

非常感謝。我不想使用FactoryGirl,但最終這是做到這一點的最佳方式。 – matiasdim

1

嘗試添加以下內容到規格:

controller.class.skip_before_filter :authenticate_user!

另一種(可能更好)的方法是檢查出的色器件文檔,看他們推薦的測試模式。

+0

非常感謝你 – matiasdim