我需要测试具有设计验证过滤器before_filter :authenticate_user!
当我运行测试时,应用程序没有已记录的用户并重定向到/ users / sign_in。然后测试搜索此视图上的内容。
如何使用FactoryGirl模拟用户会话或跳过此过滤器进行测试不?
提前致谢
答案 0 :(得分:1)
尝试将此添加到您的规范中:
controller.class.skip_before_filter :authenticate_user!
另一种(可能更好的)方法是查看设计文档以查看其推荐的测试模式。
答案 1 :(得分: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
当您拥有基于不同用户角色的控制器逻辑时,它非常有用。