web-dev-qa-db-ja.com

RSpecがDevise :: Test :: ControllerHelpersをロードしないのはなぜですか?

私はRails 5とDevise 3.5.1。を使用しています。

Devise認証を使用するAPIの作成/テストに関するニース(旧)の本をご覧ください。 Rails 5の前に書かれたので、新しいAPIのみのバージョンを使用しないことにしました。

これが私のテストです...

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

そして、これは完全に予期しないRSpecエラーです

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.

そこで私はここに行きます- http://www.rubydoc.info/gems/devise/Devise/Test/ControllerHelpers

そしてこれを試してみた->include Devise :: Test :: ControllerHelpers

ファイルcontroller_helpers.rbは私のプロジェクトのどこにもありません

ここで何が恋しかったですか?

ありがとう

44
dwilbank

次をRails_helperに追加できます。

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

これには、すべてのDevise::Test::ControllerHelpers仕様に:controllerモジュールが含まれます。

99
lest

の中に spec_helper.rb追加:

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