Używam Rails 5 i Devise 3.5.1.Dlaczego mój RSpec nie ładuje się Devise :: Test :: ControllerHelpers?
Przeglądanie ładnej (starszej) książki o tworzeniu/testowaniu interfejsu API, który korzysta z uwierzytelniania Devise. Został napisany przed Railsami 5, więc zdecydowałem się nie używać nowej wersji tylko api.
Oto moja próba ...
#/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
A oto zupełnie nieoczekiwany błąd 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.
Więc idę tutaj - http://www.rubydoc.info/gems/devise/Devise/Test/ControllerHelpers
i próbowałem ->obejmują opracować: : Test :: ControllerHelpers
co nie pomogło, ponieważ plik controller_helpers.rb
nigdzie nie był w moim projekcie
Czego tu brakuje?
Dzięki
OK to ma sens. Dziekuje panu. Typ:: kontroler jest tylko po to, aby zaoszczędzić pamięć, gdy RSpec uruchamia inne typy testów? – dwilbank
'Devise :: Test :: ControllerHelpers' jest przeznaczony do użytku tylko w testach kontrolerów, więc myślę, że niektóre z innych specyfikacji mogą być uszkodzone, jeśli są zawarte we wszystkich z nich. Dlatego musimy podać 'type:: controller'. – lest