使用rspec测试控制器,使用Sorcery进行身份验证

时间:2014-07-09 10:28:37

标签: ruby-on-rails rspec2 sorcery

我们在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

1 个答案:

答案 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所示,其中包含更多信息。

希望这有帮助!