调用设计会话控制器创建方法
allow(request.env ['warden'])。to receive(:authenticate!)。and_throw(:warden)帖子:创建,参数:{用户:{电子邮件:'[email protected]',密码:'错误'}}
您应该像这样更改代码
allow(request.env['warden']).to receive(:authenticate!).and_throw(:warden, {:scope => :user})
然后您需要在这样的测试规范中发送您的创建请求,才能正常工作。
it "gets unauthorized error" do
allow(request.env['warden']).to receive(:authenticate!).and_throw(:warden, {:scope => :user})
post :create, params: { user: {email: '[email protected]', password: 'error'} }
expect(response).to have_http_status(401)
end
确保您的spec_helper.rb
具有:
require 'rails_helper'
require 'support/controller_helpers'
require 'devise'
...
RSpec.configure do |config|
...
config.include Devise::Test::ControllerHelpers, :type => :controller
config.include ControllerHelpers, :type => :controller
...
end