我应该在我的rspec测试中包含身份验证吗?

时间:2015-09-17 11:20:22

标签: ruby-on-rails authentication rspec devise

您无法在我的Rails应用程序中执行任何操作(除了登录登录页面)而无需登录。我已花费大量时间对work进行身份验证(在我的设计中)控制器规格和Warden在我的功能规格中。)

我走的是正确的道路吗?这种感觉有点错,因为我想自己测试我的控制器......不一定要反复重复验证测试(除了在用户控制器中明确测试验证)。

最佳做法是什么?您是否明确地在任何地方进行身份验证,或者您是否以某种方式伪造身份验证并专注于您的个人控制器/功能规范而无需身份验证?

1 个答案:

答案 0 :(得分:1)

  

因为我想测试我的控制器,所以感觉不对   他们自己......不一定要重复认证测试   (除了在我的用户中明确测试身份验证之外)   控制器)。

这就是Devise为测试控制器提供自己的test helpers的原因。您不需要每次都测试授权代码,只需要一个帮助您在测试中授权用户的帮助。

最小化设置:

  

rails_helper.rb

require 'spec_helper'
require 'rspec/rails'
# note: require 'devise' after require 'rspec/rails'
require 'devise'

RSpec.configure do |config|
  config.include Devise::TestHelpers, :type => :controller
end

然后,在您的控制器规格中:

# in case you use FactoryGirl, if you don't, just create your models as you like
let(:current_user) { FactoryGirl.create(:user) } 
before do
  # this line is needed for testing Devise controllers
  @request.env["devise.mapping"] = Devise.mappings[:user]
  sign_in current_user
end