2014-07-09 2 views
0

우리는 Rails 4 앱에서 Sorcery 보석을 인증 용으로 사용하고 있습니다. 우리는 우리의 앱을위한 컨트롤러 스펙을 작성하려고한다. (우리는 Rspec으로 테스트하고있다.) 테스트를 실행할 때 우리의 애플리케이션에 로그인하지 않았기 때문에 우리의 스펙에서 호출되는 모든 메소드가 리디렉션된다.rspec을 통한 테스트 컨트롤러, Sorcery로 인증 됨

컨트롤러 사양을 허용하기 위해 추가로 구성해야하는 변경 사항은 무엇입니까?

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 

이 테스트 가져 오기에 실패; 로그인하지 않았으므로 302 (리디렉션)가 수신됩니다.

컨트롤러 구성을 테스트하기 위해 누락 된 구성 옵션은 무엇입니까?

참고 : 우리는 소서리를 사용합니다. 0.8.4

답변

1

이것은 내가 겪었던 것입니다. 가치있는 것 중 하나는 당신이 사용하고있는 버전이> = 0.8.6 (0.8.6이 방금 몇 주 전에 발표되었다)이기 때문에 어떤 종류의 마법 보석을 사용하고 있는지, 그 다음에는 더 많은 정보를 가지고 upgrading 같이

config.include Sorcery::TestHelpers::Rails::Controller, type: :controller 
config.include Sorcery::TestHelpers::Rails::Integration, type: :feature 

으로 rails_helper.rb

config.include Sorcery::TestHelpers::Rails 

으로 대체합니다.

희망이 도움이됩니다.

+0

귀하의 조언에 따라 0.8.6을 시도했지만 해당 버전에서는 로그인 문제가 발생합니다. 소서리는 암호를 생성하고 로그인 할 때 기본 설정을 사용 했음에도 불구하고 암호가 맞는지 확인하기 위해 다른 암호를 사용하는 것처럼 보입니다. 0.8.6 또한 Sorcery :: TestHelpers :: Rails :: Controller를 찾을 수 없다는 오류를 던졌습니다. – eirvandelden

관련 문제