Rspec - 设计 - rails:用户会话

时间:2013-08-05 19:47:04

标签: ruby-on-rails rspec devise

我需要测试具有设计验证过滤器before_filter :authenticate_user!

的视图的内容

当我运行测试时,应用程序没有已记录的用户并重定向到/ users / sign_in。然后测试搜索此视图上的内容。

如何使用FactoryGirl模拟用户会话或跳过此过滤器进行测试

提前致谢

2 个答案:

答案 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

当您拥有基于不同用户角色的控制器逻辑时,它非常有用。