【Rspec】Devise::MissingWarden 에러의 해결책

2535 단어 RSpecRails

상황



Rspec의 컨트롤러 사양을 구현하는 동안 제목의 오류가 발생했습니다.
처음 보는 에러문으로 당황했습니다만, 해결책이 심플했기 때문에 기재합니다.

환경



rails를 이용한 앱 개발 중, devise를 이용한 사용자 등록 기능을 구현하고 있다.



해결책



결론부터.
오류 문은

 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.

(アプリケーションがDeviseをロードしていることを確認してください 
とWardenは期待通りであり、 `Warden :: Manager` ミドルウェアはミドルウェアスタックに存在します。        あなたのテストのいずれかでこれを見ている場合、 テストが実行されていることを確認します 
Railsミドルウェアスタック、またはテストで `Devise :: Test :: ControllerHelpers`
モジュールを使用して` request.env ['warden'] `オブジェクトを挿入すること。)


라고 기재되어 있습니다.

에 아래를 기재합니다.

rails_helper.rb


 config.include Devise::Test::ControllerHelpers, type: :controller

 config.include Devise::Test::ControllerHelpers, type: :view

(私は一番下の行に記載しました。)

다시 rails s로 서버를 시작 rspec를하면,
오류가 발생한 부분의 테스트가 통과되었습니다.

원인



사용자 등록에 사용 된 gem "devise"는 warden을 기반으로했습니다.
gem이라고 하는 것으로, 베이스인 warden의 프록시 서버의 에러가 일어나, 에러문이 나와 있던 모습입니다.

프록시 서버란, 통상의 서버가 아닌 대리의 서버와 같은 의미로,
이번에는 지정한 프록시 서버를 찾을 수 없다는 오류가 아닐까 해석했습니다.

참고로 한 기사



【Rails4】Devise::MissingWarden 에러에 대처
wardencommunity/warden

좋은 웹페이지 즐겨찾기