私は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
は私のプロジェクトのどこにもありません
ここで何が恋しかったですか?
ありがとう
次をRails_helper
に追加できます。
RSpec.configure do |config|
config.include Devise::Test::ControllerHelpers, type: :controller
end
これには、すべてのDevise::Test::ControllerHelpers
仕様に:controller
モジュールが含まれます。
の中に spec_helper.rb
追加:
config.include Devise::Test::ControllerHelpers, :type => :controller