我需要測試它具有有一項認證過濾器視圖的內容before_filter :authenticate_user!
Rspec的 - 色器件 - 導軌:用戶會話
當我運行測試,應用程序沒有登錄的用戶,並重定向到/用戶/ sign_in。然後測試在這個視圖上搜索內容。
如何使用FactoryGirl模擬用戶會話或跳過此篩選器以進行測試,沒有?
在此先感謝
我需要測試它具有有一項認證過濾器視圖的內容before_filter :authenticate_user!
Rspec的 - 色器件 - 導軌:用戶會話
當我運行測試,應用程序沒有登錄的用戶,並重定向到/用戶/ sign_in。然後測試在這個視圖上搜索內容。
如何使用FactoryGirl模擬用戶會話或跳過此篩選器以進行測試,沒有?
在此先感謝
看一看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
,當你有控制器,它是非常有用的基於不同用戶角色的邏輯。
嘗試添加以下內容到規格:
controller.class.skip_before_filter :authenticate_user!
另一種(可能更好)的方法是檢查出的色器件文檔,看他們推薦的測試模式。
非常感謝你 – matiasdim
非常感謝。我不想使用FactoryGirl,但最終這是做到這一點的最佳方式。 – matiasdim