Я, имеющий пользовательский контроллертестирования разработать собственный контроллер сеанса с RSpec
class Users::SessionsController < Devise::SessionsController
# POST /resource/sign_in
def create
binding.pry
super
end
end
маршруты добавлены
devise_for :users, controllers: { sessions: "users/sessions" }
и он работает во время использования браузера для входа в аккаунт. Но внутри контроллера тестового останова внутри создают не попадания:
RSpec.describe Users::SessionsController, type: :controller do
describe 'POST #create' do
context 'pending activation user with expired password' do
it 'could not login' do
user = create :operator_user, status: User.statuses[:activation_pending], password_changed_at: (1.day + 1.second).ago
@request.env['devise.mapping'] = Devise.mappings[:user]
sign_in user
user.reload
expect(user).to be_locked
end
end
end
end
RSpec.configure do |config|
#...
# Devise methods
config.include Devise::TestHelpers, type: :controller
# ...
end
Я ожидаю, что выражение sign_in пользователь впасть в создании метода, который я перекрытая. Что я делаю не так?
пс: он даже попадает в стандартный завещанию SessionsController#create