[英]Testing devise custom session controller with rspec
我有自定义控制器
class Users::SessionsController < Devise::SessionsController
# POST /resource/sign_in
def create
binding.pry
super
end
end
新增路线
devise_for :users, controllers: { sessions: "users/sessions" }
并且可以在使用浏览器登录期间使用。 但是在create内部的控制器测试断点没有被击中:
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用户属于我已覆盖的create方法。 我究竟做错了什么?
ps:它甚至属于标准设计SessionsController#create
您必须通过在示例中使用post :create, params: {...}
而不是sign_in user
来向控制器发送请求
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.