Не удается получить тесты контроллера 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
тесты, кажется, полностью пропускают переопределение, и все тесты проходят.