ruby on rails - sign_in - ¿Por qué mi RSpec no carga Devise:: Test:: ControllerHelpers?
rspec rails devise (2)
Estoy usando Rails 5 y Devise 3.5.1.
Repasando un buen libro (antiguo) sobre cómo crear / probar una API, que usa la autenticación Devise. Fue escrito antes de Rails 5, así que elegí no usar la nueva versión api.
Aquí está mi prueba ...
#/spec/controllers/api/v1/users_controller_spec.rb
require ''rails_helper''
describe Api::V1::UsersController, :type => :controller do
before(:each) { request.headers[''Accept''] = "application/vnd.marketplace.v1" }
describe "GET #show" do
before(:each) do
@user = FactoryGirl.create :user
get :show, params: {id: @user.id}, format: :json
end
it "returns the information about a reporter on a hash" do
user_response = JSON.parse(response.body, symbolize_names: true)
expect(user_response[:email]).to eql @user.email
end
it { should respond_with 200 }
end
end
Y aquí hay un error RSpec completamente inesperado
Devise::MissingWarden:
Devise could not find the `Warden::Proxy` instance on your request environment.
Make sure that your application is loading Devise and Warden as expected and that the `Warden::Manager` middleware is present in your middleware stack.
If you are seeing this on one of your tests, ensure that your tests are either executing the Rails middleware stack or that your tests are using the `Devise::Test::ControllerHelpers` module to inject the `request.env[''warden'']` object for you.
Así que voy aquí - http://www.rubydoc.info/gems/devise/Devise/Test/ControllerHelpers
y lo intenté -> incluir Devise :: Test :: ControllerHelpers
que no ayudó porque el archivo controller_helpers.rb
no está en mi proyecto
¿Qué extrañé aquí?
Gracias
En spec_helper.rb
agregue:
config.include Devise::Test::ControllerHelpers, :type => :controller
Puede agregar lo siguiente a sus rails_helper
:
RSpec.configure do |config|
config.include Devise::Test::ControllerHelpers, type: :controller
end
Esto incluirá el Devise::Test::ControllerHelpers
en todas :controller
especificaciones del :controller
.