web-dev-qa-db-fra.com

Pourquoi mon RSpec ne charge-t-il pas Devise :: Test :: ControllerHelpers?

J'utilise Rails 5 et Devise 3.5.1.

Parcourir un livre Nice (ancien) sur la création/test d'une API, qui utilise l'authentification Devise. Il a été écrit avant Rails 5, alors j’ai choisi de ne pas utiliser la nouvelle version d’API.

Voici mon test ...

#/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

Et voici une erreur RSpec complètement inattendue

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.

Je vais donc ici - http://www.rubydoc.info/gems/devise/Devise/Test/ControllerHelpers

et essayé ceci -> include Devise :: Test :: ControllerHelpers

ce qui n'a pas aidé parce que le fichier controller_helpers.rb n'est nulle part dans mon projet

Qu'est-ce qui m'a manqué ici?

Merci

36
dwilbank

Vous pouvez ajouter ce qui suit à votre Rails_helper:

RSpec.configure do |config|
  config.include Devise::Test::ControllerHelpers, type: :controller
end

Ceci inclura le module Devise::Test::ControllerHelpers dans toutes les spécifications :controller.

85
lest

Dans le spec_helper.rb, ajoutez:

config.include Devise::Test::ControllerHelpers, :type => :controller
11
Angel Huezo