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