Не удается получить тесты контроллера rspec, чтобы увидеть переопределение контроллера моего сеанса

Я пытался написать тест, который сломался и упал в кроличью нору, пытаясь заставить rspec даже увидеть мое переопределение. Я намеренно сообщаю об ошибке, чтобы заметить ее. Этот код успешно вызывает ошибку в режиме разработки при запуске rails server,

class Devise::Extends::SessionsController < Devise::SessionsController
  before_filter :log_logout, only: :destroy
  after_filter :log_failed_login, only: [:new, :create]

  def create
    raise 'create'
    super do |user|
      # special stuff to go here
    end
  end
end

Я устанавливаю devise.mapping и попробовал с и без @,

describe LicenseesController do
  context 'viewing existing Licensee' do
    let(:other_licensee) { FactoryGirl.create(:licensee) }
    context 'as licensee_user for Licensee' do
      # For own Licensee
      #   allows show
      #   disallows index, new, edit, create, delete, update
      # For another Licensee
      #   returns not authorized
      let(:user) { FactoryGirl.create(:licensee_user, :confirmed) }

      before(:each) do
        @request.env['devise.mapping'] = Devise.mappings[:user]

        sign_in user
      end
      describe "GET show" do
        it "assigns the requested licensee as @licensee" do
          get :show, {:id => user.licensee.to_param}, valid_session
          assigns(:licensee).should eq(user.licensee)
        end

        it "rejects trying to show another Licensee" do
          expect do
            get :show, {:id => other_licensee.to_param}, valid_session
          end.to raise_exception(CanCan::AccessDenied)
        end
     end
     # more tests  


  # This should return the minimal set of attributes required to create a valid
  # Licensee. As you add validations to Licensee, be sure to
  # adjust the attributes here as well.
  let(:valid_attributes) { FactoryGirl.attributes_for(:licensee) }
  let(:wsu_attributes) { FactoryGirl.attributes_for(:web_service_user) }

  # This should return the minimal set of values that should be in the session
  # in order to pass any filters (e.g. authentication) defined in
  # LicenseesController. Be sure to keep this updated too.
  let(:valid_session) { {} }

  context 'as superuser' do
    before(:each) { sign_in user }
    let(:user) { FactoryGirl.create(:superuser, :confirmed) }
    describe "GET index" do
      it "assigns all licensees as @licensees" do
        licensee = Licensee.create! valid_attributes
        get :index, {}, valid_session
        assigns(:licensees).should eq([licensee])
      end
    end


  end

И по моему routes.rb Я имею:

devise_for :users, controllers: { sessions: 'devise/extends/sessions' }

Я упускаю что-то очевидное, что требуется, чтобы заставить это работать? Вызывает ошибку, как и ожидалось cucumber тесты и в интерактивном режиме, но rspec тесты, кажется, полностью пропускают переопределение, и все тесты проходят.

0 ответов

Другие вопросы по тегам