Вы должны изменить свой код следующим образом
allow(request.env['warden']).to receive(:authenticate!).and_throw(:warden, {:scope => :user})
, а затем вам нужно отправить запрос на создание в тестовом наборе c, чтобы это работало.
it "gets unauthorized error" do
allow(request.env['warden']).to receive(:authenticate!).and_throw(:warden, {:scope => :user})
post :create, params: { user: {email: 'test@test.com', 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