我们在Rails 4应用程序中使用Sorcery gem进行身份验证。我们想为我们的应用程序编写控制器规范(我们正在使用Rspec进行测试),但我们的规范中的所有方法调用都被重定向,因为我们在运行测试时没有登录到我们的应用程序。
我们需要进行哪些额外的配置更改才能允许控制器规格?
rails_helper.rb
Spec.configure do |config|
config.fixture_path = "#{::Rails.root}/spec/fixtures"
config.use_transactional_fixtures = true
config.infer_base_class_for_anonymous_controllers = false
config.include FactoryGirl::Syntax::Methods
config.include Sorcery::TestHelpers::Rails
end
customers_vehicles_spec.rb
require 'rails_helper'
RSpec.describe CustomersVehiclesController, type: :controller do
describe 'POST update_customer' do
before(:each) do
@job = create(:job)
@vehicle = @job.vehicle
@customer = @vehicle.customers.last
@user = create(:user_schade)
@now = DateTime.now
login_user
end
context 'user has unassinged time' do
it 'gets the vehicle information page' do
get :show_customer, id: @customer.id
expect(response).to be_success
expect(action).to render_template(partial:'customer_form')
end
end
end
此测试在get上失败;我们收到302(重定向),因为我们没有登录。
我们缺少哪些配置选项可以测试我们的控制器?
注意:我们使用的是Sorcery 0.8.4
答案 0 :(得分:1)
这是我遇到的事情。可能值得检查的一件事是你正在使用什么版本的巫术宝石,因为如果你使用的版本是> = 0.8.6(我认为几周前刚刚发布0.8.6),那么你需要在rails_helper.rb
config.include Sorcery::TestHelpers::Rails
与
config.include Sorcery::TestHelpers::Rails::Controller, type: :controller
config.include Sorcery::TestHelpers::Rails::Integration, type: :feature
如upgrading所示,其中包含更多信息。
希望这有帮助!